diff --git a/docs/index.html b/docs/index.html index 7173df1..d99f153 100644 --- a/docs/index.html +++ b/docs/index.html @@ -77,12 +77,18 @@

API Documentation

  • skel_map
  • +
  • + roots +
  • leafs
  • reindex
  • +
  • + reroot +
  • copy
  • @@ -799,42 +805,42 @@

    Top-level functions and classes

    71 def __repr__(self): 72 """Return quick summary of the skeleton's geometry.""" 73 elements = [] - 74 if hasattr(self, 'vertices'): - 75 elements.append(f'vertices={self.vertices.shape}') - 76 if hasattr(self, 'edges'): - 77 elements.append(f'edges={self.edges.shape}') - 78 if hasattr(self, 'method'): - 79 elements.append(f'method={self.method}') + 74 if hasattr(self, "vertices"): + 75 elements.append(f"vertices={self.vertices.shape}") + 76 if hasattr(self, "edges"): + 77 elements.append(f"edges={self.edges.shape}") + 78 if hasattr(self, "method"): + 79 elements.append(f"method={self.method}") 80 return f'<Skeleton({", ".join(elements)})>' 81 82 @property 83 def edges(self): 84 """Return skeleton edges.""" - 85 return self.swc.loc[self.swc.parent_id >= 0, - 86 ['node_id', 'parent_id']].values - 87 - 88 @property - 89 def vertices(self): - 90 """Return skeleton vertices (nodes).""" - 91 return self.swc[['x', 'y', 'z']].values - 92 - 93 @property - 94 def radius(self): - 95 """Return radii.""" - 96 if 'radius' not in self.swc.columns: - 97 raise ValueError('No radius info found. Run `skeletor.post.radii()`' - 98 ' to get them.') - 99 return self.swc['radius'].values + 85 return self.swc.loc[self.swc.parent_id >= 0, ["node_id", "parent_id"]].values + 86 + 87 @property + 88 def vertices(self): + 89 """Return skeleton vertices (nodes).""" + 90 return self.swc[["x", "y", "z"]].values + 91 + 92 @property + 93 def radius(self): + 94 """Return radii.""" + 95 if "radius" not in self.swc.columns: + 96 raise ValueError( + 97 "No radius info found. Run `skeletor.post.radii()`" " to get them." + 98 ) + 99 return self.swc["radius"].values 100 101 @property 102 def skeleton(self): 103 """Skeleton as trimesh Path3D.""" -104 if not hasattr(self, '_skeleton'): +104 if not hasattr(self, "_skeleton"): 105 lines = [tm.path.entities.Line(e) for e in self.edges] 106 -107 self._skeleton = tm.path.Path3D(entities=lines, -108 vertices=self.vertices, -109 process=False) +107 self._skeleton = tm.path.Path3D( +108 entities=lines, vertices=self.vertices, process=False +109 ) 110 return self._skeleton 111 112 @property @@ -842,323 +848,388 @@

    Top-level functions and classes

    114 """Skeleton vertex (nodes) to mesh vertices. Based on `mesh_map`.""" 115 if isinstance(self.mesh_map, type(None)): 116 return None -117 return pd.DataFrame(self.mesh_map -118 ).reset_index(drop=False -119 ).groupby(0)['index'].apply(np.array -120 ).values -121 -122 @property -123 def leafs(self): -124 """Leaf nodes (includes root).""" -125 swc = self.swc -126 leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)] -127 return leafs.copy() -128 -129 def reindex(self, inplace=False): -130 """Clean up skeleton.""" -131 x = self -132 if not inplace: -133 x = x.copy() -134 -135 # Re-index to make node IDs continous again -136 x.swc, new_ids = reindex_swc(x.swc) -137 -138 # Update mesh map -139 if not isinstance(x.mesh_map, type(None)): -140 x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map]) -141 -142 if not inplace: -143 return x -144 -145 def copy(self): -146 """Return copy of the skeleton.""" -147 return Skeleton(swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None, -148 mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None, -149 mesh_map=self.mesh_map.copy() if not isinstance(self.mesh_map, type(None)) else None) -150 -151 def get_graph(self): -152 """Generate networkX representation of the skeletons. -153 -154 Distance between nodes will be used as edge weights. +117 return ( +118 pd.DataFrame(self.mesh_map) +119 .reset_index(drop=False) +120 .groupby(0)["index"] +121 .apply(np.array) +122 .values +123 ) +124 +125 @property +126 def roots(self): +127 """Root node(s).""" +128 return self.swc.loc[self.swc.parent_id < 0].index.values +129 +130 @property +131 def leafs(self): +132 """Leaf nodes (includes root).""" +133 swc = self.swc +134 leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)] +135 return leafs.copy() +136 +137 def reindex(self, inplace=False): +138 """Clean up skeleton.""" +139 x = self +140 if not inplace: +141 x = x.copy() +142 +143 # Re-index to make node IDs continous again +144 x.swc, new_ids = reindex_swc(x.swc) +145 +146 # Update mesh map +147 if not isinstance(x.mesh_map, type(None)): +148 x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map]) +149 +150 if not inplace: +151 return x +152 +153 def reroot(self, new_root): +154 """Reroot the skeleton. 155 -156 Returns -157 ------- -158 networkx.DiGraph -159 -160 """ -161 not_root = self.swc.parent_id >= 0 -162 nodes = self.swc.loc[not_root] -163 parents = self.swc.set_index('node_id').loc[self.swc.loc[not_root, 'parent_id'].values] -164 -165 dists = nodes[['x', 'y', 'z']].values - parents[['x', 'y', 'z']].values -166 dists = np.sqrt((dists ** 2).sum(axis=1)) +156 Parameters +157 ---------- +158 new_root : int +159 Index of node to use as new root. If the skeleton +160 consists of multiple trees, only the tree containing the +161 new root will be updated. +162 +163 Returns +164 ------- +165 Skeleton +166 Skeleton with new root. 167 -168 G = nx.DiGraph() -169 G.add_nodes_from(self.swc.node_id.values) -170 G.add_weighted_edges_from(zip(nodes.node_id.values, nodes.parent_id.values, dists)) -171 -172 return G +168 """ +169 assert new_root in self.swc.index.values, f"Node index {new_root} not in skeleton." +170 +171 # Make copy of self +172 x = self.copy() 173 -174 def get_segments(self, -175 weight = 'weight', -176 return_lengths = False): -177 """Generate a list of linear segments while maximizing segment lengths. -178 -179 Parameters -180 ---------- -181 weight : 'weight' | None, optional -182 If ``"weight"`` use physical, geodesic length to determine -183 segment length. If ``None`` use number of nodes (faster). -184 return_lengths : bool -185 If True, also return lengths of segments according to ``weight``. -186 -187 Returns -188 ------- -189 segments : list -190 Segments as list of lists containing node IDs. List is -191 sorted by segment lengths. -192 lengths : list -193 Length for each segment according to ``weight``. Only provided -194 if `return_lengths` is True. -195 -196 """ -197 assert weight in ('weight', None), f'Unable to use weight "{weight}"' +174 # Check if the new root is already a root +175 if new_root in x.roots: +176 return x +177 +178 # Get graph representation +179 G = x.get_graph() +180 +181 # Get the path from the new root to the current root (of the same tree) +182 for r in x.roots: +183 try: +184 path = nx.shortest_path(G, source=new_root, target=r) +185 break +186 except nx.NetworkXNoPath: +187 continue +188 +189 # Now we need to invert the path from the old root to the new root +190 new_parents = x.swc.set_index('node_id').parent_id.to_dict() +191 new_parents.update({c: p for p, c in zip(path[:-1], path[1:])}) +192 new_parents[new_root] = -1 +193 +194 # Update the SWC table +195 x.swc["parent_id"] = x.swc.node_id.map(new_parents) +196 +197 return x 198 -199 # Get graph representation -200 G = self.get_graph() -201 -202 # Get distances to root -203 dists = {} -204 for root in self.swc[self.swc.parent_id < 0].node_id.values: -205 dists.update(nx.shortest_path_length(G, target=root, weight=weight)) -206 -207 # Sort leaf nodes -208 endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values -209 endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True) -210 -211 seen: set = set() -212 sequences = [] -213 for nodeID in endNodeIDs: -214 sequence = [nodeID] -215 parents = list(G.successors(nodeID)) -216 while True: -217 if not parents: -218 break -219 parentID = parents[0] -220 sequence.append(parentID) -221 if parentID in seen: -222 break -223 seen.add(parentID) -224 parents = list(G.successors(parentID)) +199 def copy(self): +200 """Return copy of the skeleton.""" +201 return Skeleton( +202 swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None, +203 mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None, +204 mesh_map=self.mesh_map.copy() +205 if not isinstance(self.mesh_map, type(None)) +206 else None, +207 method=self.method, +208 ) +209 +210 def get_graph(self): +211 """Generate networkX representation of the skeletons. +212 +213 Distance between nodes will be used as edge weights. +214 +215 Returns +216 ------- +217 networkx.DiGraph +218 +219 """ +220 not_root = self.swc.parent_id >= 0 +221 nodes = self.swc.loc[not_root] +222 parents = self.swc.set_index("node_id").loc[ +223 self.swc.loc[not_root, "parent_id"].values +224 ] 225 -226 if len(sequence) > 1: -227 sequences.append(sequence) +226 dists = nodes[["x", "y", "z"]].values - parents[["x", "y", "z"]].values +227 dists = np.sqrt((dists**2).sum(axis=1)) 228 -229 # Sort sequences by length -230 lengths = [dists[s[0]] - dists[s[-1]] for s in sequences] -231 sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)] -232 -233 if return_lengths: -234 return sequences, sorted(lengths, reverse=True) -235 else: -236 return sequences -237 -238 def save_swc(self, filepath): -239 """Save skeleton in SWC format. -240 -241 Parameters -242 ---------- -243 filepath : path-like -244 Filepath to save SWC to. -245 -246 """ -247 header = dedent(f"""\ -248 # SWC format file -249 # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html -250 # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor) -251 # PointNo Label X Y Z Radius Parent -252 # Labels: -253 # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point -254 """) -255 -256 # Make copy of SWC table -257 swc = self.swc.copy() -258 -259 # Set all labels to undefined -260 swc['label'] = 0 -261 swc.loc[~swc.node_id.isin(swc.parent_id.values), 'label'] = 6 -262 n_childs = swc.groupby('parent_id').size() -263 bp = n_childs[n_childs > 1].index.values -264 swc.loc[swc.node_id.isin(bp), 'label'] = 5 -265 -266 # Add radius if missing -267 if 'radius' not in swc.columns: -268 swc['radius'] = 0 -269 -270 # Get things in order -271 swc = swc[['node_id', 'label', 'x', 'y', 'z', 'radius', 'parent_id']] -272 -273 # Adjust column titles -274 swc.columns = ['PointNo', 'Label', 'X', 'Y', 'Z', 'Radius', 'Parent'] -275 -276 with open(filepath, 'w') as file: -277 # Write header -278 file.write(header) -279 -280 # Write data -281 writer = csv.writer(file, delimiter=' ') -282 writer.writerows(swc.astype(str).values) -283 -284 def scene(self, mesh=False, **kwargs): -285 """Return a Scene object containing the skeleton. +229 G = nx.DiGraph() +230 G.add_nodes_from(self.swc.node_id.values) +231 G.add_weighted_edges_from( +232 zip(nodes.node_id.values, nodes.parent_id.values, dists) +233 ) +234 +235 return G +236 +237 def get_segments(self, weight="weight", return_lengths=False): +238 """Generate a list of linear segments while maximizing segment lengths. +239 +240 Parameters +241 ---------- +242 weight : 'weight' | None, optional +243 If ``"weight"`` use physical, geodesic length to determine +244 segment length. If ``None`` use number of nodes (faster). +245 return_lengths : bool +246 If True, also return lengths of segments according to ``weight``. +247 +248 Returns +249 ------- +250 segments : list +251 Segments as list of lists containing node IDs. List is +252 sorted by segment lengths. +253 lengths : list +254 Length for each segment according to ``weight``. Only provided +255 if `return_lengths` is True. +256 +257 """ +258 assert weight in ("weight", None), f'Unable to use weight "{weight}"' +259 +260 # Get graph representation +261 G = self.get_graph() +262 +263 # Get distances to root +264 dists = {} +265 for root in self.swc[self.swc.parent_id < 0].node_id.values: +266 dists.update(nx.shortest_path_length(G, target=root, weight=weight)) +267 +268 # Sort leaf nodes +269 endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values +270 endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True) +271 +272 seen: set = set() +273 sequences = [] +274 for nodeID in endNodeIDs: +275 sequence = [nodeID] +276 parents = list(G.successors(nodeID)) +277 while True: +278 if not parents: +279 break +280 parentID = parents[0] +281 sequence.append(parentID) +282 if parentID in seen: +283 break +284 seen.add(parentID) +285 parents = list(G.successors(parentID)) 286 -287 Returns -288 ------- -289 scene : trimesh.scene.scene.Scene -290 Contains the skeleton and optionally the mesh. -291 -292 """ -293 if mesh: -294 if isinstance(self.mesh, type(None)): -295 raise ValueError('Skeleton has no mesh.') -296 -297 self.mesh.visual.face_colors = [100, 100, 100, 100] +287 if len(sequence) > 1: +288 sequences.append(sequence) +289 +290 # Sort sequences by length +291 lengths = [dists[s[0]] - dists[s[-1]] for s in sequences] +292 sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)] +293 +294 if return_lengths: +295 return sequences, sorted(lengths, reverse=True) +296 else: +297 return sequences 298 -299 # Note the copy(): without it the transform in show() changes -300 # the original meshes -301 sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs) -302 else: -303 sc = tm.Scene(self.skeleton.copy(), **kwargs) -304 -305 return sc +299 def save_swc(self, filepath): +300 """Save skeleton in SWC format. +301 +302 Parameters +303 ---------- +304 filepath : path-like +305 Filepath to save SWC to. 306 -307 def show(self, mesh=False, **kwargs): -308 """Render the skeleton in an opengl window. Requires pyglet. -309 -310 Parameters -311 ---------- -312 mesh : bool -313 If True, will render transparent mesh on top of the -314 skeleton. -315 -316 Returns -317 -------- -318 scene : trimesh.scene.Scene -319 Scene with skeleton in it. -320 -321 """ -322 scene = self.scene(mesh=mesh) -323 -324 # I encountered some issues if object space is big and the easiest -325 # way to work around this is to apply a transform such that the -326 # coordinates have -5 to +5 bounds -327 fac = 5 / np.fabs(self.skeleton.bounds).max() -328 scene.apply_transform(np.diag([fac, fac, fac, 1])) -329 -330 return scene.show(**kwargs) -331 -332 def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf): -333 """Mend breaks in the skeleton using the original mesh. -334 -335 This works by comparing the connectivity of the original mesh with that -336 of the skeleton. If the shortest path between two adjacent vertices on the mesh -337 is shorter than the distance between the nodes in the skeleton, a new edge -338 is added to the skeleton. -339 -340 Parameters -341 ---------- -342 dist_mult : float, optional -343 Factor by which the new edge should be shorter than the -344 current shortest path between two nodes to be added. -345 Lower values = fewer false negatives; higher values = fewer -346 false positive edges. -347 dist_min : float, optional -348 Minimum distance between nodes to consider adding an edge. -349 Use this to avoid adding very short edges. -350 dist_max : float, optional -351 Maximum distance between nodes to consider adding an edge. -352 Use this to avoid adding very long edges. -353 -354 Returns -355 ------- -356 edges : (N, 2) array -357 Edges connecting the skeleton nodes. -358 vertices : (N, 3) array -359 Positions of the skeleton nodes. -360 -361 """ -362 # We need `.mesh_map` and `.mesh` to exist -363 if self.mesh_map is None: -364 raise ValueError('Skeleton must have a `mesh_map` to mend breaks.') -365 if self.mesh is None: -366 raise ValueError('Skeleton must have a `mesh` to mend breaks.') +307 """ +308 header = dedent(f"""\ +309 # SWC format file +310 # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html +311 # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor) +312 # PointNo Label X Y Z Radius Parent +313 # Labels: +314 # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point +315 """) +316 +317 # Make copy of SWC table +318 swc = self.swc.copy() +319 +320 # Set all labels to undefined +321 swc["label"] = 0 +322 swc.loc[~swc.node_id.isin(swc.parent_id.values), "label"] = 6 +323 n_childs = swc.groupby("parent_id").size() +324 bp = n_childs[n_childs > 1].index.values +325 swc.loc[swc.node_id.isin(bp), "label"] = 5 +326 +327 # Add radius if missing +328 if "radius" not in swc.columns: +329 swc["radius"] = 0 +330 +331 # Get things in order +332 swc = swc[["node_id", "label", "x", "y", "z", "radius", "parent_id"]] +333 +334 # Adjust column titles +335 swc.columns = ["PointNo", "Label", "X", "Y", "Z", "Radius", "Parent"] +336 +337 with open(filepath, "w") as file: +338 # Write header +339 file.write(header) +340 +341 # Write data +342 writer = csv.writer(file, delimiter=" ") +343 writer.writerows(swc.astype(str).values) +344 +345 def scene(self, mesh=False, **kwargs): +346 """Return a Scene object containing the skeleton. +347 +348 Returns +349 ------- +350 scene : trimesh.scene.scene.Scene +351 Contains the skeleton and optionally the mesh. +352 +353 """ +354 if mesh: +355 if isinstance(self.mesh, type(None)): +356 raise ValueError("Skeleton has no mesh.") +357 +358 self.mesh.visual.face_colors = [100, 100, 100, 100] +359 +360 # Note the copy(): without it the transform in show() changes +361 # the original meshes +362 sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs) +363 else: +364 sc = tm.Scene(self.skeleton.copy(), **kwargs) +365 +366 return sc 367 -368 # Make a copy of the mesh edges -369 edges = self.mesh.edges.copy() -370 # Map mesh vertices to skeleton vertices -371 edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]] -372 edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]] -373 # Deduplicate -374 edges = np.unique(edges, axis=0) -375 # Remove self edges -376 edges = edges[edges[:,0] != edges[:, 1]] -377 -378 G = self.get_graph().to_undirected() -379 -380 # Remove edges that are already in the skeleton -381 edges = np.array([e for e in edges if not G.has_edge(*e)]) -382 -383 # Calculate distance between these new edge candidates -384 dists = np.sqrt(((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1)) -385 -386 # Sort by distance (lowest first) -387 edges = edges[np.argsort(dists)] -388 dists = dists[np.argsort(dists)] -389 -390 for e, d in zip(edges, dists): -391 # Check if the new path would be shorter than the current shortest path -392 if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]): -393 continue -394 # Check if the distance is within bounds -395 elif d < dist_min: -396 continue -397 elif d > dist_max: -398 continue -399 # Add edge -400 G.add_edge(*e, weight=d) -401 -402 # The above may have introduced small triangles which we should try to remove -403 # by removing the longest edge in a triangle. I have also spotted more -404 # complex cases of four or more nodes forming false-positive loops but -405 # these will be harder to detect and remove. -406 -407 # First collect neighbors for each node -408 later_nbrs = {} -409 for node, neighbors in G.adjacency(): -410 later_nbrs[node] = {n for n in neighbors if n not in later_nbrs and n != node} -411 -412 # Go over each node -413 triangles = set() -414 for node1, neighbors in later_nbrs.items(): -415 # Go over each neighbor -416 for node2 in neighbors: -417 # Check if there is one or more third nodes that are connected to both -418 third_nodes = neighbors & later_nbrs[node2] -419 for node3 in third_nodes: -420 # Add triangle (sort to deduplicate) -421 triangles.add(tuple(sorted([node1, node2, node3]))) -422 -423 # Remove longest edge in each triangle -424 for t in triangles: -425 e1, e2, e3 = t[:2], t[1:], t[::2] -426 # Make sure all edges still exist (we may have already removed edges -427 # that were part of a previous triangle) -428 if any(not G.has_edge(*e) for e in (e1, e2, e3)): -429 continue -430 # Remove the longest edge -431 G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]['weight'])) -432 -433 return np.array(G.edges), self.vertices.copy() +368 def show(self, mesh=False, **kwargs): +369 """Render the skeleton in an opengl window. Requires pyglet. +370 +371 Parameters +372 ---------- +373 mesh : bool +374 If True, will render transparent mesh on top of the +375 skeleton. +376 +377 Returns +378 -------- +379 scene : trimesh.scene.Scene +380 Scene with skeleton in it. +381 +382 """ +383 scene = self.scene(mesh=mesh) +384 +385 # I encountered some issues if object space is big and the easiest +386 # way to work around this is to apply a transform such that the +387 # coordinates have -5 to +5 bounds +388 fac = 5 / np.fabs(self.skeleton.bounds).max() +389 scene.apply_transform(np.diag([fac, fac, fac, 1])) +390 +391 return scene.show(**kwargs) +392 +393 def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf): +394 """Mend breaks in the skeleton using the original mesh. +395 +396 This works by comparing the connectivity of the original mesh with that +397 of the skeleton. If the shortest path between two adjacent vertices on the mesh +398 is shorter than the distance between the nodes in the skeleton, a new edge +399 is added to the skeleton. +400 +401 Parameters +402 ---------- +403 dist_mult : float, optional +404 Factor by which the new edge should be shorter than the +405 current shortest path between two nodes to be added. +406 Lower values = fewer false negatives; higher values = fewer +407 false positive edges. +408 dist_min : float, optional +409 Minimum distance between nodes to consider adding an edge. +410 Use this to avoid adding very short edges. +411 dist_max : float, optional +412 Maximum distance between nodes to consider adding an edge. +413 Use this to avoid adding very long edges. +414 +415 Returns +416 ------- +417 edges : (N, 2) array +418 Edges connecting the skeleton nodes. +419 vertices : (N, 3) array +420 Positions of the skeleton nodes. +421 +422 """ +423 # We need `.mesh_map` and `.mesh` to exist +424 if self.mesh_map is None: +425 raise ValueError("Skeleton must have a `mesh_map` to mend breaks.") +426 if self.mesh is None: +427 raise ValueError("Skeleton must have a `mesh` to mend breaks.") +428 +429 # Make a copy of the mesh edges +430 edges = self.mesh.edges.copy() +431 # Map mesh vertices to skeleton vertices +432 edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]] +433 edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]] +434 # Deduplicate +435 edges = np.unique(edges, axis=0) +436 # Remove self edges +437 edges = edges[edges[:, 0] != edges[:, 1]] +438 +439 G = self.get_graph().to_undirected() +440 +441 # Remove edges that are already in the skeleton +442 edges = np.array([e for e in edges if not G.has_edge(*e)]) +443 +444 # Calculate distance between these new edge candidates +445 dists = np.sqrt( +446 ((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1) +447 ) +448 +449 # Sort by distance (lowest first) +450 edges = edges[np.argsort(dists)] +451 dists = dists[np.argsort(dists)] +452 +453 for e, d in zip(edges, dists): +454 # Check if the new path would be shorter than the current shortest path +455 if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]): +456 continue +457 # Check if the distance is within bounds +458 elif d < dist_min: +459 continue +460 elif d > dist_max: +461 continue +462 # Add edge +463 G.add_edge(*e, weight=d) +464 +465 # The above may have introduced small triangles which we should try to remove +466 # by removing the longest edge in a triangle. I have also spotted more +467 # complex cases of four or more nodes forming false-positive loops but +468 # these will be harder to detect and remove. +469 +470 # First collect neighbors for each node +471 later_nbrs = {} +472 for node, neighbors in G.adjacency(): +473 later_nbrs[node] = { +474 n for n in neighbors if n not in later_nbrs and n != node +475 } +476 +477 # Go over each node +478 triangles = set() +479 for node1, neighbors in later_nbrs.items(): +480 # Go over each neighbor +481 for node2 in neighbors: +482 # Check if there is one or more third nodes that are connected to both +483 third_nodes = neighbors & later_nbrs[node2] +484 for node3 in third_nodes: +485 # Add triangle (sort to deduplicate) +486 triangles.add(tuple(sorted([node1, node2, node3]))) +487 +488 # Remove longest edge in each triangle +489 for t in triangles: +490 e1, e2, e3 = t[:2], t[1:], t[::2] +491 # Make sure all edges still exist (we may have already removed edges +492 # that were part of a previous triangle) +493 if any(not G.has_edge(*e) for e in (e1, e2, e3)): +494 continue +495 # Remove the longest edge +496 G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]["weight"])) +497 +498 return np.array(G.edges), self.vertices.copy() @@ -1268,8 +1339,7 @@
    Attributes
    82    @property
     83    def edges(self):
     84        """Return skeleton edges."""
    -85        return self.swc.loc[self.swc.parent_id >= 0,
    -86                            ['node_id', 'parent_id']].values
    +85        return self.swc.loc[self.swc.parent_id >= 0, ["node_id", "parent_id"]].values
     
    @@ -1287,10 +1357,10 @@
    Attributes
    -
    88    @property
    -89    def vertices(self):
    -90        """Return skeleton vertices (nodes)."""
    -91        return self.swc[['x', 'y', 'z']].values
    +            
    87    @property
    +88    def vertices(self):
    +89        """Return skeleton vertices (nodes)."""
    +90        return self.swc[["x", "y", "z"]].values
     
    @@ -1308,13 +1378,14 @@
    Attributes
    -
    93    @property
    -94    def radius(self):
    -95        """Return radii."""
    -96        if 'radius' not in self.swc.columns:
    -97            raise ValueError('No radius info found. Run `skeletor.post.radii()`'
    -98                             ' to get them.')
    -99        return self.swc['radius'].values
    +            
    92    @property
    +93    def radius(self):
    +94        """Return radii."""
    +95        if "radius" not in self.swc.columns:
    +96            raise ValueError(
    +97                "No radius info found. Run `skeletor.post.radii()`" " to get them."
    +98            )
    +99        return self.swc["radius"].values
     
    @@ -1335,12 +1406,12 @@
    Attributes
    101    @property
     102    def skeleton(self):
     103        """Skeleton as trimesh Path3D."""
    -104        if not hasattr(self, '_skeleton'):
    +104        if not hasattr(self, "_skeleton"):
     105            lines = [tm.path.entities.Line(e) for e in self.edges]
     106
    -107            self._skeleton = tm.path.Path3D(entities=lines,
    -108                                            vertices=self.vertices,
    -109                                            process=False)
    +107            self._skeleton = tm.path.Path3D(
    +108                entities=lines, vertices=self.vertices, process=False
    +109            )
     110        return self._skeleton
     
    @@ -1364,10 +1435,13 @@
    Attributes
    114 """Skeleton vertex (nodes) to mesh vertices. Based on `mesh_map`.""" 115 if isinstance(self.mesh_map, type(None)): 116 return None -117 return pd.DataFrame(self.mesh_map -118 ).reset_index(drop=False -119 ).groupby(0)['index'].apply(np.array -120 ).values +117 return ( +118 pd.DataFrame(self.mesh_map) +119 .reset_index(drop=False) +120 .groupby(0)["index"] +121 .apply(np.array) +122 .values +123 )
    @@ -1375,6 +1449,27 @@
    Attributes
    + +
    + +
    + roots + + + +
    + +
    125    @property
    +126    def roots(self):
    +127        """Root node(s)."""
    +128        return self.swc.loc[self.swc.parent_id < 0].index.values
    +
    + + +

    Root node(s).

    +
    + +
    @@ -1385,12 +1480,12 @@
    Attributes
    -
    122    @property
    -123    def leafs(self):
    -124        """Leaf nodes (includes root)."""
    -125        swc = self.swc
    -126        leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)]
    -127        return leafs.copy()
    +            
    130    @property
    +131    def leafs(self):
    +132        """Leaf nodes (includes root)."""
    +133        swc = self.swc
    +134        leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)]
    +135        return leafs.copy()
     
    @@ -1410,21 +1505,21 @@
    Attributes
    -
    129    def reindex(self, inplace=False):
    -130        """Clean up skeleton."""
    -131        x = self
    -132        if not inplace:
    -133            x = x.copy()
    -134
    -135        # Re-index to make node IDs continous again
    -136        x.swc, new_ids = reindex_swc(x.swc)
    -137
    -138        # Update mesh map
    -139        if not isinstance(x.mesh_map, type(None)):
    -140            x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map])
    -141
    -142        if not inplace:
    -143            return x
    +            
    137    def reindex(self, inplace=False):
    +138        """Clean up skeleton."""
    +139        x = self
    +140        if not inplace:
    +141            x = x.copy()
    +142
    +143        # Re-index to make node IDs continous again
    +144        x.swc, new_ids = reindex_swc(x.swc)
    +145
    +146        # Update mesh map
    +147        if not isinstance(x.mesh_map, type(None)):
    +148            x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map])
    +149
    +150        if not inplace:
    +151            return x
     
    @@ -1432,6 +1527,85 @@
    Attributes
    + +
    + +
    + + def + reroot(self, new_root): + + + +
    + +
    153    def reroot(self, new_root):
    +154        """Reroot the skeleton.
    +155
    +156        Parameters
    +157        ----------
    +158        new_root :  int
    +159                    Index of node to use as new root. If the skeleton
    +160                    consists of multiple trees, only the tree containing the
    +161                    new root will be updated.
    +162
    +163        Returns
    +164        -------
    +165        Skeleton
    +166                    Skeleton with new root.
    +167
    +168        """
    +169        assert new_root in self.swc.index.values, f"Node index {new_root} not in skeleton."
    +170
    +171        # Make copy of self
    +172        x = self.copy()
    +173
    +174        # Check if the new root is already a root
    +175        if new_root in x.roots:
    +176            return x
    +177
    +178        # Get graph representation
    +179        G = x.get_graph()
    +180
    +181        # Get the path from the new root to the current root (of the same tree)
    +182        for r in x.roots:
    +183            try:
    +184                path = nx.shortest_path(G, source=new_root, target=r)
    +185                break
    +186            except nx.NetworkXNoPath:
    +187                continue
    +188
    +189        # Now we need to invert the path from the old root to the new root
    +190        new_parents = x.swc.set_index('node_id').parent_id.to_dict()
    +191        new_parents.update({c: p for p, c in zip(path[:-1], path[1:])})
    +192        new_parents[new_root] = -1
    +193
    +194        # Update the SWC table
    +195        x.swc["parent_id"] = x.swc.node_id.map(new_parents)
    +196
    +197        return x
    +
    + + +

    Reroot the skeleton.

    + +
    Parameters
    + + + +
    Returns
    + + +
    + +
    @@ -1444,11 +1618,16 @@
    Attributes
    -
    145    def copy(self):
    -146        """Return copy of the skeleton."""
    -147        return Skeleton(swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None,
    -148                        mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None,
    -149                        mesh_map=self.mesh_map.copy() if not isinstance(self.mesh_map, type(None)) else None)
    +            
    199    def copy(self):
    +200        """Return copy of the skeleton."""
    +201        return Skeleton(
    +202            swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None,
    +203            mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None,
    +204            mesh_map=self.mesh_map.copy()
    +205            if not isinstance(self.mesh_map, type(None))
    +206            else None,
    +207            method=self.method,
    +208        )
     
    @@ -1468,28 +1647,32 @@
    Attributes
    -
    151    def get_graph(self):
    -152        """Generate networkX representation of the skeletons.
    -153
    -154        Distance between nodes will be used as edge weights.
    -155
    -156        Returns
    -157        -------
    -158        networkx.DiGraph
    -159
    -160        """
    -161        not_root = self.swc.parent_id >= 0
    -162        nodes = self.swc.loc[not_root]
    -163        parents = self.swc.set_index('node_id').loc[self.swc.loc[not_root, 'parent_id'].values]
    -164
    -165        dists = nodes[['x', 'y', 'z']].values - parents[['x', 'y', 'z']].values
    -166        dists = np.sqrt((dists ** 2).sum(axis=1))
    -167
    -168        G = nx.DiGraph()
    -169        G.add_nodes_from(self.swc.node_id.values)
    -170        G.add_weighted_edges_from(zip(nodes.node_id.values, nodes.parent_id.values, dists))
    -171
    -172        return G
    +            
    210    def get_graph(self):
    +211        """Generate networkX representation of the skeletons.
    +212
    +213        Distance between nodes will be used as edge weights.
    +214
    +215        Returns
    +216        -------
    +217        networkx.DiGraph
    +218
    +219        """
    +220        not_root = self.swc.parent_id >= 0
    +221        nodes = self.swc.loc[not_root]
    +222        parents = self.swc.set_index("node_id").loc[
    +223            self.swc.loc[not_root, "parent_id"].values
    +224        ]
    +225
    +226        dists = nodes[["x", "y", "z"]].values - parents[["x", "y", "z"]].values
    +227        dists = np.sqrt((dists**2).sum(axis=1))
    +228
    +229        G = nx.DiGraph()
    +230        G.add_nodes_from(self.swc.node_id.values)
    +231        G.add_weighted_edges_from(
    +232            zip(nodes.node_id.values, nodes.parent_id.values, dists)
    +233        )
    +234
    +235        return G
     
    @@ -1517,69 +1700,67 @@
    Returns
    -
    174    def get_segments(self,
    -175                     weight = 'weight',
    -176                     return_lengths = False):
    -177        """Generate a list of linear segments while maximizing segment lengths.
    -178
    -179        Parameters
    -180        ----------
    -181        weight :    'weight' | None, optional
    -182                    If ``"weight"`` use physical, geodesic length to determine
    -183                    segment length. If ``None`` use number of nodes (faster).
    -184        return_lengths : bool
    -185                    If True, also return lengths of segments according to ``weight``.
    -186
    -187        Returns
    -188        -------
    -189        segments :  list
    -190                    Segments as list of lists containing node IDs. List is
    -191                    sorted by segment lengths.
    -192        lengths :   list
    -193                    Length for each segment according to ``weight``. Only provided
    -194                    if `return_lengths` is True.
    -195
    -196        """
    -197        assert weight in ('weight', None), f'Unable to use weight "{weight}"'
    -198
    -199        # Get graph representation
    -200        G = self.get_graph()
    -201
    -202        # Get distances to root
    -203        dists = {}
    -204        for root in self.swc[self.swc.parent_id < 0].node_id.values:
    -205            dists.update(nx.shortest_path_length(G, target=root, weight=weight))
    -206
    -207        # Sort leaf nodes
    -208        endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values
    -209        endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True)
    -210
    -211        seen: set = set()
    -212        sequences = []
    -213        for nodeID in endNodeIDs:
    -214            sequence = [nodeID]
    -215            parents = list(G.successors(nodeID))
    -216            while True:
    -217                if not parents:
    -218                    break
    -219                parentID = parents[0]
    -220                sequence.append(parentID)
    -221                if parentID in seen:
    -222                    break
    -223                seen.add(parentID)
    -224                parents = list(G.successors(parentID))
    -225
    -226            if len(sequence) > 1:
    -227                sequences.append(sequence)
    -228
    -229        # Sort sequences by length
    -230        lengths = [dists[s[0]] - dists[s[-1]] for s in sequences]
    -231        sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)]
    -232
    -233        if return_lengths:
    -234            return sequences, sorted(lengths, reverse=True)
    -235        else:
    -236            return sequences
    +            
    237    def get_segments(self, weight="weight", return_lengths=False):
    +238        """Generate a list of linear segments while maximizing segment lengths.
    +239
    +240        Parameters
    +241        ----------
    +242        weight :    'weight' | None, optional
    +243                    If ``"weight"`` use physical, geodesic length to determine
    +244                    segment length. If ``None`` use number of nodes (faster).
    +245        return_lengths : bool
    +246                    If True, also return lengths of segments according to ``weight``.
    +247
    +248        Returns
    +249        -------
    +250        segments :  list
    +251                    Segments as list of lists containing node IDs. List is
    +252                    sorted by segment lengths.
    +253        lengths :   list
    +254                    Length for each segment according to ``weight``. Only provided
    +255                    if `return_lengths` is True.
    +256
    +257        """
    +258        assert weight in ("weight", None), f'Unable to use weight "{weight}"'
    +259
    +260        # Get graph representation
    +261        G = self.get_graph()
    +262
    +263        # Get distances to root
    +264        dists = {}
    +265        for root in self.swc[self.swc.parent_id < 0].node_id.values:
    +266            dists.update(nx.shortest_path_length(G, target=root, weight=weight))
    +267
    +268        # Sort leaf nodes
    +269        endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values
    +270        endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True)
    +271
    +272        seen: set = set()
    +273        sequences = []
    +274        for nodeID in endNodeIDs:
    +275            sequence = [nodeID]
    +276            parents = list(G.successors(nodeID))
    +277            while True:
    +278                if not parents:
    +279                    break
    +280                parentID = parents[0]
    +281                sequence.append(parentID)
    +282                if parentID in seen:
    +283                    break
    +284                seen.add(parentID)
    +285                parents = list(G.successors(parentID))
    +286
    +287            if len(sequence) > 1:
    +288                sequences.append(sequence)
    +289
    +290        # Sort sequences by length
    +291        lengths = [dists[s[0]] - dists[s[-1]] for s in sequences]
    +292        sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)]
    +293
    +294        if return_lengths:
    +295            return sequences, sorted(lengths, reverse=True)
    +296        else:
    +297            return sequences
     
    @@ -1620,51 +1801,51 @@
    Returns
    -
    238    def save_swc(self, filepath):
    -239        """Save skeleton in SWC format.
    -240
    -241        Parameters
    -242        ----------
    -243        filepath :      path-like
    -244                        Filepath to save SWC to.
    -245
    -246        """
    -247        header = dedent(f"""\
    -248        # SWC format file
    -249        # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html
    -250        # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor)
    -251        # PointNo Label X Y Z Radius Parent
    -252        # Labels:
    -253        # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point
    -254        """)
    -255
    -256        # Make copy of SWC table
    -257        swc = self.swc.copy()
    -258
    -259        # Set all labels to undefined
    -260        swc['label'] = 0
    -261        swc.loc[~swc.node_id.isin(swc.parent_id.values), 'label'] = 6
    -262        n_childs = swc.groupby('parent_id').size()
    -263        bp = n_childs[n_childs > 1].index.values
    -264        swc.loc[swc.node_id.isin(bp), 'label'] = 5
    -265
    -266        # Add radius if missing
    -267        if 'radius' not in swc.columns:
    -268            swc['radius'] = 0
    -269
    -270        # Get things in order
    -271        swc = swc[['node_id', 'label', 'x', 'y', 'z', 'radius', 'parent_id']]
    -272
    -273        # Adjust column titles
    -274        swc.columns = ['PointNo', 'Label', 'X', 'Y', 'Z', 'Radius', 'Parent']
    -275
    -276        with open(filepath, 'w') as file:
    -277            # Write header
    -278            file.write(header)
    -279
    -280            # Write data
    -281            writer = csv.writer(file, delimiter=' ')
    -282            writer.writerows(swc.astype(str).values)
    +            
    299    def save_swc(self, filepath):
    +300        """Save skeleton in SWC format.
    +301
    +302        Parameters
    +303        ----------
    +304        filepath :      path-like
    +305                        Filepath to save SWC to.
    +306
    +307        """
    +308        header = dedent(f"""\
    +309        # SWC format file
    +310        # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html
    +311        # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor)
    +312        # PointNo Label X Y Z Radius Parent
    +313        # Labels:
    +314        # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point
    +315        """)
    +316
    +317        # Make copy of SWC table
    +318        swc = self.swc.copy()
    +319
    +320        # Set all labels to undefined
    +321        swc["label"] = 0
    +322        swc.loc[~swc.node_id.isin(swc.parent_id.values), "label"] = 6
    +323        n_childs = swc.groupby("parent_id").size()
    +324        bp = n_childs[n_childs > 1].index.values
    +325        swc.loc[swc.node_id.isin(bp), "label"] = 5
    +326
    +327        # Add radius if missing
    +328        if "radius" not in swc.columns:
    +329            swc["radius"] = 0
    +330
    +331        # Get things in order
    +332        swc = swc[["node_id", "label", "x", "y", "z", "radius", "parent_id"]]
    +333
    +334        # Adjust column titles
    +335        swc.columns = ["PointNo", "Label", "X", "Y", "Z", "Radius", "Parent"]
    +336
    +337        with open(filepath, "w") as file:
    +338            # Write header
    +339            file.write(header)
    +340
    +341            # Write data
    +342            writer = csv.writer(file, delimiter=" ")
    +343            writer.writerows(swc.astype(str).values)
     
    @@ -1691,28 +1872,28 @@
    Parameters
    -
    284    def scene(self, mesh=False, **kwargs):
    -285        """Return a Scene object containing the skeleton.
    -286
    -287        Returns
    -288        -------
    -289        scene :     trimesh.scene.scene.Scene
    -290                    Contains the skeleton and optionally the mesh.
    -291
    -292        """
    -293        if mesh:
    -294            if isinstance(self.mesh, type(None)):
    -295                raise ValueError('Skeleton has no mesh.')
    -296
    -297            self.mesh.visual.face_colors = [100, 100, 100, 100]
    -298
    -299            # Note the copy(): without it the transform in show() changes
    -300            # the original meshes
    -301            sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs)
    -302        else:
    -303            sc = tm.Scene(self.skeleton.copy(), **kwargs)
    -304
    -305        return sc
    +            
    345    def scene(self, mesh=False, **kwargs):
    +346        """Return a Scene object containing the skeleton.
    +347
    +348        Returns
    +349        -------
    +350        scene :     trimesh.scene.scene.Scene
    +351                    Contains the skeleton and optionally the mesh.
    +352
    +353        """
    +354        if mesh:
    +355            if isinstance(self.mesh, type(None)):
    +356                raise ValueError("Skeleton has no mesh.")
    +357
    +358            self.mesh.visual.face_colors = [100, 100, 100, 100]
    +359
    +360            # Note the copy(): without it the transform in show() changes
    +361            # the original meshes
    +362            sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs)
    +363        else:
    +364            sc = tm.Scene(self.skeleton.copy(), **kwargs)
    +365
    +366        return sc
     
    @@ -1739,30 +1920,30 @@
    Returns
    -
    307    def show(self, mesh=False, **kwargs):
    -308        """Render the skeleton in an opengl window. Requires pyglet.
    -309
    -310        Parameters
    -311        ----------
    -312        mesh :      bool
    -313                    If True, will render transparent mesh on top of the
    -314                    skeleton.
    -315
    -316        Returns
    -317        --------
    -318        scene :     trimesh.scene.Scene
    -319                    Scene with skeleton in it.
    -320
    -321        """
    -322        scene = self.scene(mesh=mesh)
    -323
    -324        # I encountered some issues if object space is big and the easiest
    -325        # way to work around this is to apply a transform such that the
    -326        # coordinates have -5 to +5 bounds
    -327        fac = 5 / np.fabs(self.skeleton.bounds).max()
    -328        scene.apply_transform(np.diag([fac, fac, fac, 1]))
    -329
    -330        return scene.show(**kwargs)
    +            
    368    def show(self, mesh=False, **kwargs):
    +369        """Render the skeleton in an opengl window. Requires pyglet.
    +370
    +371        Parameters
    +372        ----------
    +373        mesh :      bool
    +374                    If True, will render transparent mesh on top of the
    +375                    skeleton.
    +376
    +377        Returns
    +378        --------
    +379        scene :     trimesh.scene.Scene
    +380                    Scene with skeleton in it.
    +381
    +382        """
    +383        scene = self.scene(mesh=mesh)
    +384
    +385        # I encountered some issues if object space is big and the easiest
    +386        # way to work around this is to apply a transform such that the
    +387        # coordinates have -5 to +5 bounds
    +388        fac = 5 / np.fabs(self.skeleton.bounds).max()
    +389        scene.apply_transform(np.diag([fac, fac, fac, 1]))
    +390
    +391        return scene.show(**kwargs)
     
    @@ -1797,108 +1978,112 @@
    Returns
    -
    332    def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf):
    -333        """Mend breaks in the skeleton using the original mesh.
    -334
    -335        This works by comparing the connectivity of the original mesh with that
    -336        of the skeleton. If the shortest path between two adjacent vertices on the mesh
    -337        is shorter than the distance between the nodes in the skeleton, a new edge
    -338        is added to the skeleton.
    -339
    -340        Parameters
    -341        ----------
    -342        dist_mult : float, optional
    -343                    Factor by which the new edge should be shorter than the
    -344                    current shortest path between two nodes to be added.
    -345                    Lower values = fewer false negatives; higher values = fewer
    -346                    false positive edges.
    -347        dist_min :  float, optional
    -348                    Minimum distance between nodes to consider adding an edge.
    -349                    Use this to avoid adding very short edges.
    -350        dist_max :  float, optional
    -351                    Maximum distance between nodes to consider adding an edge.
    -352                    Use this to avoid adding very long edges.
    -353
    -354        Returns
    -355        -------
    -356        edges :     (N, 2) array
    -357                    Edges connecting the skeleton nodes.
    -358        vertices :  (N, 3) array
    -359                    Positions of the skeleton nodes.
    -360
    -361        """
    -362        # We need `.mesh_map` and `.mesh` to exist
    -363        if self.mesh_map is None:
    -364            raise ValueError('Skeleton must have a `mesh_map` to mend breaks.')
    -365        if self.mesh is None:
    -366            raise ValueError('Skeleton must have a `mesh` to mend breaks.')
    -367
    -368        # Make a copy of the mesh edges
    -369        edges = self.mesh.edges.copy()
    -370        # Map mesh vertices to skeleton vertices
    -371        edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]]
    -372        edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]]
    -373        # Deduplicate
    -374        edges = np.unique(edges, axis=0)
    -375        # Remove self edges
    -376        edges = edges[edges[:,0] != edges[:, 1]]
    -377
    -378        G = self.get_graph().to_undirected()
    -379
    -380        # Remove edges that are already in the skeleton
    -381        edges = np.array([e for e in edges if not G.has_edge(*e)])
    -382
    -383        # Calculate distance between these new edge candidates
    -384        dists = np.sqrt(((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1))
    -385
    -386        # Sort by distance (lowest first)
    -387        edges = edges[np.argsort(dists)]
    -388        dists = dists[np.argsort(dists)]
    -389
    -390        for e, d in zip(edges, dists):
    -391            # Check if the new path would be shorter than the current shortest path
    -392            if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]):
    -393                continue
    -394            # Check if the distance is within bounds
    -395            elif d < dist_min:
    -396                continue
    -397            elif d > dist_max:
    -398                continue
    -399            # Add edge
    -400            G.add_edge(*e, weight=d)
    -401
    -402        # The above may have introduced small triangles which we should try to remove
    -403        # by removing the longest edge in a triangle. I have also spotted more
    -404        # complex cases of four or more nodes forming false-positive loops but
    -405        # these will be harder to detect and remove.
    -406
    -407        # First collect neighbors for each node
    -408        later_nbrs = {}
    -409        for node, neighbors in G.adjacency():
    -410            later_nbrs[node] = {n for n in neighbors if n not in later_nbrs and n != node}
    -411
    -412        # Go over each node
    -413        triangles = set()
    -414        for node1, neighbors in later_nbrs.items():
    -415            # Go over each neighbor
    -416            for node2 in neighbors:
    -417                # Check if there is one or more third nodes that are connected to both
    -418                third_nodes = neighbors & later_nbrs[node2]
    -419                for node3 in third_nodes:
    -420                    # Add triangle (sort to deduplicate)
    -421                    triangles.add(tuple(sorted([node1, node2, node3])))
    -422
    -423        # Remove longest edge in each triangle
    -424        for t in triangles:
    -425            e1, e2, e3 = t[:2], t[1:], t[::2]
    -426            # Make sure all edges still exist (we may have already removed edges
    -427            # that were part of a previous triangle)
    -428            if any(not G.has_edge(*e) for e in (e1, e2, e3)):
    -429                continue
    -430            # Remove the longest edge
    -431            G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]['weight']))
    -432
    -433        return np.array(G.edges), self.vertices.copy()
    +            
    393    def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf):
    +394        """Mend breaks in the skeleton using the original mesh.
    +395
    +396        This works by comparing the connectivity of the original mesh with that
    +397        of the skeleton. If the shortest path between two adjacent vertices on the mesh
    +398        is shorter than the distance between the nodes in the skeleton, a new edge
    +399        is added to the skeleton.
    +400
    +401        Parameters
    +402        ----------
    +403        dist_mult : float, optional
    +404                    Factor by which the new edge should be shorter than the
    +405                    current shortest path between two nodes to be added.
    +406                    Lower values = fewer false negatives; higher values = fewer
    +407                    false positive edges.
    +408        dist_min :  float, optional
    +409                    Minimum distance between nodes to consider adding an edge.
    +410                    Use this to avoid adding very short edges.
    +411        dist_max :  float, optional
    +412                    Maximum distance between nodes to consider adding an edge.
    +413                    Use this to avoid adding very long edges.
    +414
    +415        Returns
    +416        -------
    +417        edges :     (N, 2) array
    +418                    Edges connecting the skeleton nodes.
    +419        vertices :  (N, 3) array
    +420                    Positions of the skeleton nodes.
    +421
    +422        """
    +423        # We need `.mesh_map` and `.mesh` to exist
    +424        if self.mesh_map is None:
    +425            raise ValueError("Skeleton must have a `mesh_map` to mend breaks.")
    +426        if self.mesh is None:
    +427            raise ValueError("Skeleton must have a `mesh` to mend breaks.")
    +428
    +429        # Make a copy of the mesh edges
    +430        edges = self.mesh.edges.copy()
    +431        # Map mesh vertices to skeleton vertices
    +432        edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]]
    +433        edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]]
    +434        # Deduplicate
    +435        edges = np.unique(edges, axis=0)
    +436        # Remove self edges
    +437        edges = edges[edges[:, 0] != edges[:, 1]]
    +438
    +439        G = self.get_graph().to_undirected()
    +440
    +441        # Remove edges that are already in the skeleton
    +442        edges = np.array([e for e in edges if not G.has_edge(*e)])
    +443
    +444        # Calculate distance between these new edge candidates
    +445        dists = np.sqrt(
    +446            ((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1)
    +447        )
    +448
    +449        # Sort by distance (lowest first)
    +450        edges = edges[np.argsort(dists)]
    +451        dists = dists[np.argsort(dists)]
    +452
    +453        for e, d in zip(edges, dists):
    +454            # Check if the new path would be shorter than the current shortest path
    +455            if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]):
    +456                continue
    +457            # Check if the distance is within bounds
    +458            elif d < dist_min:
    +459                continue
    +460            elif d > dist_max:
    +461                continue
    +462            # Add edge
    +463            G.add_edge(*e, weight=d)
    +464
    +465        # The above may have introduced small triangles which we should try to remove
    +466        # by removing the longest edge in a triangle. I have also spotted more
    +467        # complex cases of four or more nodes forming false-positive loops but
    +468        # these will be harder to detect and remove.
    +469
    +470        # First collect neighbors for each node
    +471        later_nbrs = {}
    +472        for node, neighbors in G.adjacency():
    +473            later_nbrs[node] = {
    +474                n for n in neighbors if n not in later_nbrs and n != node
    +475            }
    +476
    +477        # Go over each node
    +478        triangles = set()
    +479        for node1, neighbors in later_nbrs.items():
    +480            # Go over each neighbor
    +481            for node2 in neighbors:
    +482                # Check if there is one or more third nodes that are connected to both
    +483                third_nodes = neighbors & later_nbrs[node2]
    +484                for node3 in third_nodes:
    +485                    # Add triangle (sort to deduplicate)
    +486                    triangles.add(tuple(sorted([node1, node2, node3])))
    +487
    +488        # Remove longest edge in each triangle
    +489        for t in triangles:
    +490            e1, e2, e3 = t[:2], t[1:], t[::2]
    +491            # Make sure all edges still exist (we may have already removed edges
    +492            # that were part of a previous triangle)
    +493            if any(not G.has_edge(*e) for e in (e1, e2, e3)):
    +494                continue
    +495            # Remove the longest edge
    +496            G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]["weight"]))
    +497
    +498        return np.array(G.edges), self.vertices.copy()
     
    diff --git a/docs/search.js b/docs/search.js index 4182caf..baf58a4 100644 --- a/docs/search.js +++ b/docs/search.js @@ -1,6 +1,6 @@ window.pdocSearch = (function(){ /** elasticlunr - http://weixsong.github.io * Copyright (C) 2017 Oliver Nightingale * Copyright (C) 2017 Wei Song * MIT Licensed */!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oWhat is skeletor?\n\n

    Unlike its namesake, this skeletor\ndoes not (yet) seek to conquer Eternia but to turn meshes into skeletons.

    \n\n

    Before we get started some terminology:

    \n\n
      \n
    • a mesh is something that consists of vertices and faces
    • \n
    • a skeleton is a (hierarchical) tree-like structure consisting of vertices\n(also called nodes) and edges that connect them
    • \n
    \n\n

    Skeletons are useful for a range of reasons. For example:

    \n\n
      \n
    1. Typically smaller (less vertices) than the mesh
    2. \n
    3. Have an implicit sense of topology (e.g. \"this node is distal to that node\")
    4. \n
    \n\n

    Extracting skeletons from meshes (or other types of data such as voxels) is\nnon-trivial and there are a great many research papers exploring various\ndifferent approaches (see Google scholar).

    \n\n

    skeletor implements some algorithms that I found useful in my work with\nneurons. In my experience there is unfortuntely no magic bullet when it\ncomes to skeletonization and chances are you will have to fiddle around a bit\nto get decent results.

    \n\n

    Installation

    \n\n

    From PyPI:

    \n\n
    \n
    pip3 install skeletor\n
    \n
    \n\n

    For the bleeding-edge version from Github:

    \n\n
    \n
    pip3 install git+https://github.com/navis-org/skeletor@master\n
    \n
    \n\n

    Getting started

    \n\n

    A skeletonization pipeline typically consists of:

    \n\n
      \n
    1. Some pre-processing of the mesh (e.g. fixing some potential errors like\ndegenerate faces, unreferenced vertices, etc.)
    2. \n
    3. The skeletonization itself
    4. \n
    5. Some post-processing of the skeleton (e.g. adding radius information, smoothing, etc.)
    6. \n
    \n\n
    \n\n

    Here is a complete list of available functions:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    functiondescription
    example data
    skeletor.example_mesh()load an example mesh
    pre-processing
    skeletor.pre.fix_mesh()fix some common errors found in meshes
    skeletor.pre.remesh()re-generate mesh (uses Blender 3D)
    skeletor.pre.simplify()reduce mesh complexity (uses Blender 3D)
    skeletor.pre.contract()contract mesh to facilitate skeletonization [1]
    skeletonization
    skeletor.skeletonize.by_wavefront()very fast, works well for tubular meshes (like neurons)
    skeletor.skeletonize.by_vertex_clusters()very fast but needs mesh to be contracted (see above)
    skeletor.skeletonize.by_edge_collapse()presented in [1] but never got this to work well
    skeletor.skeletonize.by_teasar()very fast and robust, works on mesh surface
    skeletor.skeletonize.by_tangent_ball()very fast, best on smooth meshes
    postprocessing
    skeletor.post.clean_up()fix some potential errors in the skeleton
    skeletor.post.radii()add radius information using various method
    skeletor.post.smooth()smooth the skeleton
    skeletor.post.remove_bristles()remove single-node bristles from the skeleton
    skeletor.post.despike()smooth out jumps in the skeleton
    \n\n
    \n\n

    See docstrings of the respective functions for details.

    \n\n

    A pipeline might look like this:

    \n\n
      \n
    1. skeletor.pre.fix_mesh() to fix the mesh
    2. \n
    3. skeletor.pre.simplify() to simplify the mesh
    4. \n
    5. skeletor.pre.contract() to contract the mesh [1]
    6. \n
    7. skeletor.skeletonize.by_vertex_clusters() to generate a skeleton
    8. \n
    9. skeletor.post.clean_up() to clean up some potential issues with the skeleton
    10. \n
    11. skeletor.post.smooth() to smooth the skeleton
    12. \n
    13. skeletor.post.radii() to extract radii either by k-nearest neighbours or ray-casting
    14. \n
    \n\n

    In my experience there is no one-size-fits-all. You will have to play around to\nfind the right approach and parameters to get nice skeletons for your meshes.\nIf you need help just open an issue.

    \n\n

    Also check out the Gotchas below!

    \n\n

    Examples

    \n\n

    First load the example mesh (a fruit fly neuron):

    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> mesh\n<trimesh.Trimesh(vertices.shape=(6582, 3), faces.shape=(13772, 3))>\n
    \n
    \n\n

    Next see if there is stuff to fix in the mesh (degenerate faces, duplicate\nvertices, etc.):

    \n\n
    \n
    >>> fixed = sk.pre.fix_mesh(mesh, remove_disconnected=5, inplace=False)\n>>> fixed\n<trimesh.Trimesh(vertices.shape=(6213, 3), faces.shape=(12805, 3))>\n
    \n
    \n\n

    Now for tubular meshes like this neuron, the \"wave front\" skeletonization method\nperforms really well: it works by casting waves across the mesh and collapsing\nthe resulting rings into a skeleton (kinda like when you throw a stone in a\npond and track the expanding ripples).

    \n\n
    \n
    >>> skel = sk.skeletonize.by_wavefront(fixed, waves=1, step_size=1)\n>>> skel\n<Skeleton(vertices=(1258, 3), edges=(1194, 2), method=wavefront)>\n
    \n
    \n\n

    All skeletonization methods return a Skeleton object. These are just\nconvenient objects to bundle the various outputs of the skeletonization.

    \n\n
    \n
    >>> # x/y/z location of skeleton vertices (nodes)\n>>> skel.vertices\narray([[16744, 36720, 26407],\n       ...,\n       [22076, 23217, 24472]])\n>>> # child -> parent edges\n>>> skel.edges\narray([[  64,   31],\n       ...,\n       [1257, 1252]])\n>>> # Mapping for mesh to skeleton vertex indices\n>>> skel.mesh_map\narray([ 157,  158, 1062, ...,  525,  474,  547])\n>>> # SWC table\n>>> skel.swc.head()\n   node_id  parent_id             x             y             z    radius\n0        0         -1  16744.005859  36720.058594  26407.902344  0.000000\n1        1         -1   5602.751953  22266.756510  15799.991211  7.542587\n2        2         -1  16442.666667  14999.978516  10887.916016  5.333333\n
    \n
    \n\n

    SWC is a commonly used format for saving skeletons. Skeleton objects\nhave a method for quickly saving a correctly formatted SWC file:

    \n\n
    \n
    >>> skel.save_swc('~/Documents/my_skeleton.swc')\n
    \n
    \n\n

    If you installed pyglet (see above) you can also use trimesh's plotting\ncapabilities to inspect the results:

    \n\n
    \n
    >>> skel.show(mesh=True)\n
    \n
    \n\n

    \"skeletor_example\"

    \n\n

    That looks pretty good already but let's run some pro-forma postprocessing.

    \n\n
    \n
    >>> sk.post.clean_up(skel, inplace=True)\n<Skeleton(vertices=(1071, 3), edges=(1070, 2))>\n
    \n
    \n\n

    So that would be a full pipeline mesh to skeleton. Don't expect your own meshes\nto produce such nice results off the bat though. Chances are you will need to\nplay around to find the right recipe. If you don't know where to start, I suggest\nyou try out mesh contraction + vertex clustering first:

    \n\n
    \n
    >>> import skeletor as sk\n>>> # Load the example mesh that ships with skeletor\n>>> mesh = sk.example_mesh()\n>>> # Alternatively use trimesh to load/construct your own mesh:\n>>> # import trimesh as tm\n>>> # mesh = tm.Trimesh(vertices, faces)\n>>> # mesh = tm.load_mesh('some/mesh.obj')\n>>> # Run some general clean-up (see docstring for details)\n>>> fixed = sk.pre.fix_mesh(mesh, remove_disconnected=5, inplace=False)\n>>> # Contract mesh to 10% (0.1) of original volume\n>>> cont = sk.pre.contract(fixed, epsilon=0.1)\n>>> # Skeletonize\n>>> skel = sk.skeletonize.by_vertex_clusters(cont, sampling_dist=100)\n>>> # Replace contracted mesh with original for postprocessing and plotting\n>>> skel.mesh = fixed\n>>> # Add radii (vertex cluster method does not do that automatically)\n>>> sk.post.radii(skel, method='knn')\n>>> skel.show(mesh=True)\n
    \n
    \n\n

    Gotchas

    \n\n
      \n
    • while this is a general purpose library, my personal focus is on neurons and\nthis has certainly influenced things like default parameter values and certain\npost-processing steps
    • \n
    • meshes need to be triangular (we are using trimesh)
    • \n
    • use sk.pre.simplify if your mesh is very complex (half a million vertices is\nwhere things start getting sluggish)
    • \n
    • a good mesh contraction is often half the battle but it can be tricky to get\nto work
    • \n
    • if the mesh consists of multiple disconnected pieces the skeleton will\nlikewise be fragmented (i.e. will have multiple roots)
    • \n
    • it's often a good idea to fix issues with the skeleton in postprocessing rather\nthan trying to get the skeletonization to be perfect
    • \n
    \n\n

    Benchmarks

    \n\n

    \"skeletor_benchmark\"

    \n\n

    Benchmarks\nwere run on a 2018 MacBook Pro (2.2 GHz Core i7, 32Gb memory) with optional\nfastremap dependency installed. Note some of these functions (e.g.\ncontraction and TEASAR/vertex cluster skeletonization) vary a lot in\nspeed based on parameterization.

    \n\n

    What about algorithm X?

    \n\n

    skeletor contains some algorithms that I found easy enough to implement\nand useful for my work with neurons. If you have some interesting paper/approach\nthat could make a nice addition to skeletor, please get in touch on Github.\nPull requests are always welcome!

    \n\n

    References

    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n\n

    The abstract and the paper can be found here.\nAlso see this YouTube video.

    \n\n

    Some of the code in skeletor was modified from the\nPy_BL_MeshSkeletonization\naddon created by #0K Srinivasan Ramachandran and published under GPL3.

    \n\n

    Top-level functions and classes

    \n\n

    At top-level we only expose example_mesh() and the Skeleton class (which\nyou probably won't ever need to touch manually). Everything else is neatly\ntucked away into submodules (see side-bar or above table).

    \n"}, "skeletor.Skeleton": {"fullname": "skeletor.Skeleton", "modulename": "skeletor", "qualname": "Skeleton", "kind": "class", "doc": "

    Class representing a skeleton.

    \n\n

    Typically returned as results from a skeletonization.

    \n\n
    Attributes
    \n\n
      \n
    • swc (pd.DataFrame, optional):\nSWC table.
    • \n
    • vertices ((N, 3) array):\nVertex (node) positions.
    • \n
    • edges ((M, 2) array):\nIndices of connected vertex pairs.
    • \n
    • radii ((N, ) array, optional):\nRadii for each vertex (node) in the skeleton.
    • \n
    • mesh (trimesh, optional):\nThe original mesh.
    • \n
    • mesh_map (array, optional):\nSame length as mesh. Maps mesh vertices to vertices (nodes)\nin the skeleton.
    • \n
    • skel_map (array of arrays, optional):\nInverse of mesh_map: maps skeleton vertices (nodes) to mesh\nvertices.
    • \n
    • method (str, optional):\nWhich method was used to generate the skeleton.
    • \n
    \n"}, "skeletor.Skeleton.__init__": {"fullname": "skeletor.Skeleton.__init__", "modulename": "skeletor", "qualname": "Skeleton.__init__", "kind": "function", "doc": "

    \n", "signature": "(swc, mesh=None, mesh_map=None, method=None)"}, "skeletor.Skeleton.swc": {"fullname": "skeletor.Skeleton.swc", "modulename": "skeletor", "qualname": "Skeleton.swc", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.mesh": {"fullname": "skeletor.Skeleton.mesh", "modulename": "skeletor", "qualname": "Skeleton.mesh", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.mesh_map": {"fullname": "skeletor.Skeleton.mesh_map", "modulename": "skeletor", "qualname": "Skeleton.mesh_map", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.method": {"fullname": "skeletor.Skeleton.method", "modulename": "skeletor", "qualname": "Skeleton.method", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.edges": {"fullname": "skeletor.Skeleton.edges", "modulename": "skeletor", "qualname": "Skeleton.edges", "kind": "variable", "doc": "

    Return skeleton edges.

    \n"}, "skeletor.Skeleton.vertices": {"fullname": "skeletor.Skeleton.vertices", "modulename": "skeletor", "qualname": "Skeleton.vertices", "kind": "variable", "doc": "

    Return skeleton vertices (nodes).

    \n"}, "skeletor.Skeleton.radius": {"fullname": "skeletor.Skeleton.radius", "modulename": "skeletor", "qualname": "Skeleton.radius", "kind": "variable", "doc": "

    Return radii.

    \n"}, "skeletor.Skeleton.skeleton": {"fullname": "skeletor.Skeleton.skeleton", "modulename": "skeletor", "qualname": "Skeleton.skeleton", "kind": "variable", "doc": "

    Skeleton as trimesh Path3D.

    \n"}, "skeletor.Skeleton.skel_map": {"fullname": "skeletor.Skeleton.skel_map", "modulename": "skeletor", "qualname": "Skeleton.skel_map", "kind": "variable", "doc": "

    Skeleton vertex (nodes) to mesh vertices. Based on mesh_map.

    \n"}, "skeletor.Skeleton.leafs": {"fullname": "skeletor.Skeleton.leafs", "modulename": "skeletor", "qualname": "Skeleton.leafs", "kind": "variable", "doc": "

    Leaf nodes (includes root).

    \n"}, "skeletor.Skeleton.reindex": {"fullname": "skeletor.Skeleton.reindex", "modulename": "skeletor", "qualname": "Skeleton.reindex", "kind": "function", "doc": "

    Clean up skeleton.

    \n", "signature": "(self, inplace=False):", "funcdef": "def"}, "skeletor.Skeleton.copy": {"fullname": "skeletor.Skeleton.copy", "modulename": "skeletor", "qualname": "Skeleton.copy", "kind": "function", "doc": "

    Return copy of the skeleton.

    \n", "signature": "(self):", "funcdef": "def"}, "skeletor.Skeleton.get_graph": {"fullname": "skeletor.Skeleton.get_graph", "modulename": "skeletor", "qualname": "Skeleton.get_graph", "kind": "function", "doc": "

    Generate networkX representation of the skeletons.

    \n\n

    Distance between nodes will be used as edge weights.

    \n\n
    Returns
    \n\n
      \n
    • networkx.DiGraph
    • \n
    \n", "signature": "(self):", "funcdef": "def"}, "skeletor.Skeleton.get_segments": {"fullname": "skeletor.Skeleton.get_segments", "modulename": "skeletor", "qualname": "Skeleton.get_segments", "kind": "function", "doc": "

    Generate a list of linear segments while maximizing segment lengths.

    \n\n
    Parameters
    \n\n
      \n
    • weight ('weight' | None, optional):\nIf \"weight\" use physical, geodesic length to determine\nsegment length. If None use number of nodes (faster).
    • \n
    • return_lengths (bool):\nIf True, also return lengths of segments according to weight.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • segments (list):\nSegments as list of lists containing node IDs. List is\nsorted by segment lengths.
    • \n
    • lengths (list):\nLength for each segment according to weight. Only provided\nif return_lengths is True.
    • \n
    \n", "signature": "(self, weight='weight', return_lengths=False):", "funcdef": "def"}, "skeletor.Skeleton.save_swc": {"fullname": "skeletor.Skeleton.save_swc", "modulename": "skeletor", "qualname": "Skeleton.save_swc", "kind": "function", "doc": "

    Save skeleton in SWC format.

    \n\n
    Parameters
    \n\n
      \n
    • filepath (path-like):\nFilepath to save SWC to.
    • \n
    \n", "signature": "(self, filepath):", "funcdef": "def"}, "skeletor.Skeleton.scene": {"fullname": "skeletor.Skeleton.scene", "modulename": "skeletor", "qualname": "Skeleton.scene", "kind": "function", "doc": "

    Return a Scene object containing the skeleton.

    \n\n
    Returns
    \n\n
      \n
    • scene (trimesh.scene.scene.Scene):\nContains the skeleton and optionally the mesh.
    • \n
    \n", "signature": "(self, mesh=False, **kwargs):", "funcdef": "def"}, "skeletor.Skeleton.show": {"fullname": "skeletor.Skeleton.show", "modulename": "skeletor", "qualname": "Skeleton.show", "kind": "function", "doc": "

    Render the skeleton in an opengl window. Requires pyglet.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (bool):\nIf True, will render transparent mesh on top of the\nskeleton.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • scene (trimesh.scene.Scene):\nScene with skeleton in it.
    • \n
    \n", "signature": "(self, mesh=False, **kwargs):", "funcdef": "def"}, "skeletor.Skeleton.mend_breaks": {"fullname": "skeletor.Skeleton.mend_breaks", "modulename": "skeletor", "qualname": "Skeleton.mend_breaks", "kind": "function", "doc": "

    Mend breaks in the skeleton using the original mesh.

    \n\n

    This works by comparing the connectivity of the original mesh with that\nof the skeleton. If the shortest path between two adjacent vertices on the mesh\nis shorter than the distance between the nodes in the skeleton, a new edge\nis added to the skeleton.

    \n\n
    Parameters
    \n\n
      \n
    • dist_mult (float, optional):\nFactor by which the new edge should be shorter than the\ncurrent shortest path between two nodes to be added.\nLower values = fewer false negatives; higher values = fewer\nfalse positive edges.
    • \n
    • dist_min (float, optional):\nMinimum distance between nodes to consider adding an edge.\nUse this to avoid adding very short edges.
    • \n
    • dist_max (float, optional):\nMaximum distance between nodes to consider adding an edge.\nUse this to avoid adding very long edges.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • edges ((N, 2) array):\nEdges connecting the skeleton nodes.
    • \n
    • vertices ((N, 3) array):\nPositions of the skeleton nodes.
    • \n
    \n", "signature": "(self, dist_mult=5, dist_min=0, dist_max=inf):", "funcdef": "def"}, "skeletor.example_mesh": {"fullname": "skeletor.example_mesh", "modulename": "skeletor", "qualname": "example_mesh", "kind": "function", "doc": "

    Load and return example mesh.

    \n\n

    The example mesh is a fruit fly neuron (an olfactory projection neuron of\nthe DA1 glomerulus) segmented from an EM image data set. It is part of the\nJanelia hemibrain data set (see here) [1].

    \n\n
    References
    \n\n

    [1] Louis K. Scheffer et al., eLife. 2020. doi: 10.7554/eLife.57443\nA connectome and analysis of the adult Drosophila central brain

    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> # Load this example mesh\n>>> mesh = sk.example_mesh()\n
    \n
    \n", "signature": "():", "funcdef": "def"}, "skeletor.post": {"fullname": "skeletor.post", "modulename": "skeletor.post", "kind": "module", "doc": "

    The skeletor.post module contains functions to post-process skeletons after\nskeletonization.

    \n\n

    Fixing issues with skeletons

    \n\n

    Depending on your mesh, pre-processing and the parameters you chose for\nskeletonization, chances are that your skeleton will not come out perfectly.

    \n\n

    skeletor.post.clean_up can help you solve some potential issues:

    \n\n
      \n
    • skeleton nodes (vertices) that outside or right on the surface instead of\ncentered inside the mesh
    • \n
    • superfluous \"hairs\" on otherwise straight bits
    • \n
    \n\n

    skeletor.post.smooth will smooth out the skeleton.

    \n\n

    skeletor.post.despike can help you remove spikes in the skeleton where\nsingle nodes are out of aligment.

    \n\n

    skeletor.post.remove_bristles will remove bristles from the skeleton.

    \n\n

    Computing radius information

    \n\n

    Only skeletor.skeletonize.by_wavefront() provides radii off the bat. For all\nother methods, you might want to run skeletor.post.radii can help you\n(re-)generate radius information for the skeletons.

    \n"}, "skeletor.post.radii": {"fullname": "skeletor.post.radii", "modulename": "skeletor.post", "qualname": "radii", "kind": "function", "doc": "

    Extract radii for given skeleton table.

    \n\n
    Important
    \n\n

    This function really only produces useful radii if the skeleton is centered\ninside the mesh. by_wavefront does that by default whereas all other\nskeletonization methods don't. Your best bet to get centered skeletons is\nto contract the mesh first (sk.pre.contract).

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • method (\"knn\" | \"ray\"):\nWhether and how to add radius information to each node::

      \n\n
      - \"knn\" uses k-nearest-neighbors to get radii: fast but\n  potential for being very wrong\n- \"ray\" uses ray-casting to get radii: slower but sometimes\n  less wrong\n
    • \n
    • aggregate (\"mean\" | \"median\" | \"max\" | \"min\" | \"percentile75\"):\nFunction used to aggregate radii over sample (i.e. across\nk nearest-neighbors or ray intersections)
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore skeletonization. Note that this might make changes to\nyour mesh inplace!
    • \n
    • **kwargs: Keyword arguments are passed to the respective method:
    • \n
    \n\n

    For method \"knn\"::

    \n\n
    n :             int (default 5)\n                Radius will be the mean over n nearest-neighbors.\n
    \n\n

    For method \"ray\"::

    \n\n
    n_rays :        int (default 20)\n                Number of rays to cast for each node.\nprojection :    \"sphere\" (default) | \"tangents\"\n                Whether to cast rays in a sphere around each node or in a\n                circle orthogonally to the node's tangent vector.\nfallback :      \"knn\" (default) | None | number\n                If a point is outside or right on the surface of the mesh\n                the raycasting will return nonesense results. We can either\n                ignore those cases (``None``), assign a arbitrary number or\n                we can fall back to radii from k-nearest-neighbors (``knn``).\n
    \n\n
    Returns
    \n\n
      \n
    • None: But attaches radius to the skeleton's SWC table. Existing\nvalues are replaced!
    • \n
    \n", "signature": "(\ts,\tmesh=None,\tmethod='knn',\taggregate='mean',\tvalidate=False,\t**kwargs):", "funcdef": "def"}, "skeletor.post.clean_up": {"fullname": "skeletor.post.clean_up", "modulename": "skeletor.post", "qualname": "clean_up", "kind": "function", "doc": "

    Clean up the skeleton.

    \n\n

    This function bundles a bunch of procedures to clean up the skeleton:

    \n\n
      \n
    1. Remove twigs that are running parallel to their parent branch
    2. \n
    3. Move nodes outside the mesh back inside (or at least snap to surface)
    4. \n
    \n\n

    Note that this is not a magic bullet and some of this will not work (well)\nif the original mesh was degenerate (e.g. internal faces or not watertight)\nto begin with.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore cleaning up. Note that this might change your mesh\ninplace!
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If True,\nwill modify the s inplace.
    • \n
    • **kwargs: Keyword arguments are passed to the bundled function.
    • \n
    \n\n

    For skeletor.postprocessing.drop_parallel_twigs::

    \n\n

    theta : float (default 0.01)\n For each twig we generate the dotproduct between the tangent\n vectors of it and its parents. If these line up perfectly the\n dotproduct will equal 1. theta determines how much that\n value can differ from 1 for us to still prune the twig: higher\n theta = more pruning.

    \n\n
    Returns
    \n\n
      \n
    • s_clean (skeletor.Skeleton):\nHopefully improved skeleton.
    • \n
    \n", "signature": "(s, mesh=None, validate=False, inplace=False, **kwargs):", "funcdef": "def"}, "skeletor.post.smooth": {"fullname": "skeletor.post.smooth", "modulename": "skeletor.post", "qualname": "smooth", "kind": "function", "doc": "

    Smooth skeleton using rolling windows.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to be processed.
    • \n
    • window (int, optional):\nSize (N observations) of the rolling window in number of\nnodes.
    • \n
    • to_smooth (list):\nColumns of the node table to smooth. Should work with any\nnumeric column (e.g. 'radius').
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If\nTrue, will modify the s inplace.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton with smoothed node table.
    • \n
    \n", "signature": "(\ts,\twindow: int = 3,\tto_smooth: list = ['x', 'y', 'z'],\tinplace: bool = False):", "funcdef": "def"}, "skeletor.post.despike": {"fullname": "skeletor.post.despike", "modulename": "skeletor.post", "qualname": "despike", "kind": "function", "doc": "

    Remove spikes in skeleton.

    \n\n

    For each node A, the euclidean distance to its next successor (parent)\nB and that node's successor C (i.e A->B->C) is computed. If\n\\( \\frac{dist(A,B)}{dist(A,C)}>sigma \\), node B is considered a spike\nand realigned between A and C.

    \n\n
    Parameters
    \n\n
      \n
    • x (skeletor.Skeleton):\nSkeleton to be processed.
    • \n
    • sigma (float | int, optional):\nThreshold for spike detection. Smaller sigma = more\naggressive spike detection.
    • \n
    • max_spike_length (int, optional):\nDetermines how long (# of nodes) a spike can be.
    • \n
    • inplace (bool, optional):\nIf False, a copy of the neuron is returned.
    • \n
    • reverse (bool, optional):\nIf True, will also walk the segments from proximal\nto distal. Use this to catch spikes on e.g. terminal\nnodes.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s skeletor.Skeleton: Despiked neuron.
    • \n
    \n", "signature": "(s, sigma=5, max_spike_length=1, inplace=False, reverse=False):", "funcdef": "def"}, "skeletor.post.remove_bristles": {"fullname": "skeletor.post.remove_bristles", "modulename": "skeletor.post", "qualname": "remove_bristles", "kind": "function", "doc": "

    Remove \"bristles\" that sometimes occurr along the backbone.

    \n\n

    Works by finding terminal twigs that consist of only a single node.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • los_only (bool):\nIf True, will only remove bristles that are in line of sight of\ntheir parent. If False, will remove all single-node bristles.
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If True,\nwill modify the s inplace.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton with single-node twigs removed.
    • \n
    \n", "signature": "(s, mesh=None, los_only=False, inplace=False):", "funcdef": "def"}, "skeletor.pre": {"fullname": "skeletor.pre", "modulename": "skeletor.pre", "kind": "module", "doc": "

    The skeletor.pre module contains functions to pre-process meshes before\nskeletonization.

    \n\n

    Fixing faulty meshes

    \n\n

    Some skeletonization methods are susceptible to faulty meshes (degenerate faces,\nwrong normals, etc.). If your skeleton looks off, it might be worth a shot\ntrying to fix the mesh using skeletor.pre.fix_mesh().

    \n\n

    Mesh contraction

    \n\n

    As a rule of thumb: the more your mesh looks like a skeleton, the easier it is\nto extract one (duh). Mesh contraction using skeletor.pre.contract() [1] can\nhelp you to get your mesh \"in shape\".

    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n"}, "skeletor.pre.fix_mesh": {"fullname": "skeletor.pre.fix_mesh", "modulename": "skeletor.pre", "qualname": "fix_mesh", "kind": "function", "doc": "

    Try to fix some common problems with mesh.

    \n\n
      \n
    1. Remove infinite values
    2. \n
    3. Merge duplicate vertices
    4. \n
    5. Remove duplicate and degenerate faces
    6. \n
    7. Remove unreference vertices
    8. \n
    9. Drop winglets (faces that have only one adjacent face)
    10. \n
    11. Fix normals (Optional)
    12. \n
    13. Remove disconnected fragments (Optional)
    14. \n
    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh-like object):\nMesh to fix. Must have .vertices and .faces\nproperties.
    • \n
    • remove_disconnected (False | int):\nIf a number is given, will iterate over the mesh's\nconnected components and remove those consisting of\nless than the given number of vertices. For example,\nremove_disconnected=5 will drop parts of the\nmesh that consist of five or less connected\nvertices.
    • \n
    • inplace (bool):\nIf True, will perform fixes on the input mesh.\nIf False, will make a copy first. This is silently\nignored if mesh is not already a trimesh.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • fixed mesh (trimesh.Trimesh):
    • \n
    \n", "signature": "(\tmesh,\tremote_infinite=True,\tmerge_duplicate_verts=True,\tremove_degenerate_faces=True,\tremove_unreferenced_verts=True,\tdrop_winglets=True,\tfix_normals=False,\tremove_disconnected=False,\tinplace=False):", "funcdef": "def"}, "skeletor.pre.simplify": {"fullname": "skeletor.pre.simplify", "modulename": "skeletor.pre", "qualname": "simplify", "kind": "function", "doc": "

    Simplify mesh using Blender 3D.

    \n\n

    Uses Blender's \"decimate\" modifier in \"collapse\" mode.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (trimesh.Trimesh):\nMesh to simplify.
    • \n
    • ratio (float):\nFactor to which to reduce faces. For example, a ratio of 0.5 will\nreduce the number of faces to 50%.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Simplified mesh.
    • \n
    \n", "signature": "(mesh, ratio):", "funcdef": "def"}, "skeletor.pre.remesh": {"fullname": "skeletor.pre.remesh", "modulename": "skeletor.pre", "qualname": "remesh", "kind": "function", "doc": "

    Remesh mesh using Blender 3D.

    \n\n

    Uses Blender's \"remesh\" modifier in \"voxel\" mode.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (trimesh.Trimesh):\nMesh to remesh.
    • \n
    • voxel_size (float):\nSize of individual voxels (edge length).
    • \n
    • adaptivity (float):\nReduces final face count where detail is not important.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Remeshed mesh.
    • \n
    \n", "signature": "(mesh, voxel_size=50, adaptivity=5):", "funcdef": "def"}, "skeletor.pre.contract": {"fullname": "skeletor.pre.contract", "modulename": "skeletor.pre", "qualname": "contract", "kind": "function", "doc": "

    Contract mesh.

    \n\n

    In a nutshell: this function contracts the mesh by applying rounds of\n_constraint_ Laplacian smoothing. This function can be fairly expensive\nand I highly recommend you play around with SL to contract the\nmesh in as few steps as possible. The contraction doesn't have to be perfect\nfor good skeletonization results (<10%, i.e. epsilon<0.1).

    \n\n

    Also: parameterization matters a lot! Default parameters will get you there\nbut playing around with SL and WH0 might speed things up by an order of\nmagnitude.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be contracted. Can be any object (e.g.\na trimesh.Trimesh) that has .vertices and .faces\nproperties or a tuple (vertices, faces) or a dictionary\n{'vertices': vertices, 'faces': faces}.\nVertices and faces must be (N, 3) numpy arrays.
    • \n
    • epsilon (float (0-1), optional):\nTarget contraction rate as measured by the sum of all face\nareas in the contracted versus the original mesh. Algorithm\nwill stop once mesh is contracted below this threshold.\nDepending on your mesh (number of faces, shape) reaching a\nstrong contraction can be extremely costly with comparatively\nlittle benefit for the subsequent skeletonization. Note that\nthe algorithm might stop short of this target if iter_lim\nor time_lim is reached first or if the sum of face areas\nis increasing from one iteration to the next instead of\ndecreasing.
    • \n
    • iter_lim (int (>1), optional):\nMaximum rounds of contractions.
    • \n
    • time_lim (int, optional):\nMaximum run time in seconds. Note that this limit is not\nchecked during but after each round of contraction. Hence,\nthe actual total time will likely overshoot time_lim.
    • \n
    • precision (float, optional):\nSets the precision for finding the least-square solution.\nThis is the main determinant for speed vs quality: lower\nvalues will take (much) longer but will get you closer to an\noptimally contracted mesh. Higher values will be faster but\nthe iterative contractions might stop early.
    • \n
    • SL (float, optional):\nFactor by which the contraction matrix is multiplied for\neach iteration. Higher values = quicker contraction, lower\nvalues = more likely to get you an optimal contraction.
    • \n
    • WH0 (float, optional):\nInitial weight factor for the attraction constraints.\nThe ratio of the initial weights WL0 and WH0\ncontrols the smoothness and the degree of contraction of the\nfirst iteration result, thus it determines the amount of\ndetails retained in subsequent and final contracted meshes:\nhigher WH0 = more details retained.
    • \n
    • WL0 (\"auto\" | float):\nInitial weight factor for the contraction constraints. By\ndefault (\"auto\"), this will be set to 1e-3 * sqrt(A)\nwith A being the average face area. This ensures that\ncontraction forces scale with the coarseness of the mesh.
    • \n
    • operator (\"cotangent\" | \"umbrella\"):\nWhich Laplacian operator to use:

      \n\n
        \n
      • The \"cotangent\" operator (default) takes both topology\nand geometry of the mesh into account and is hence a\nbetter descriptor of the curvature flow. This is the\noperator used in the original paper.
      • \n
      • The \"umbrella\" operator (aka \"uniform weighting\") uses\nonly topological features of the mesh. This also makes\nit more robust against flaws in the mesh! Use it when\nthe cotangent operator produces oddly contracted meshes.
      • \n
    • \n
    • progress (bool):\nWhether or not to show a progress bar.
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore collapsing. Degenerate meshes can lead to effectively\ninfinite runtime for this function!
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Contracted copy of original mesh. The final contraction rate\nis attached to the mesh as .epsilon property.
    • \n
    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n", "signature": "(\tmesh,\tepsilon=1e-06,\titer_lim=100,\ttime_lim=None,\tprecision=1e-07,\tSL=2,\tWH0=1,\tWL0='auto',\toperator='cotangent',\tprogress=True,\tvalidate=True):", "funcdef": "def"}, "skeletor.skeletonize": {"fullname": "skeletor.skeletonize", "modulename": "skeletor.skeletonize", "kind": "module", "doc": "

    The skeletor.skeletonize module contains functions to for skeletonization\nof meshes.

    \n\n

    There are several approaches to skeletonizing a mesh. Which one to pick depends\n(among other things) on the shape of your mesh and the skeleton quality you want\nto get out of it. In general, unless you mesh already looks like a tube I\nrecommend looking into mesh contraction 4.

    \n\n

    Please see the documentation of the individual functions for details but here\nis a quick summary:

    \n\n\n\n\n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n
    functionspeedrobustradii 1mesh map 2description
    skeletor.skeletonize.by_wavefront()+++++yesyesworks well for tubular meshes
    skeletor.skeletonize.by_vertex_clusters()+++noyesbest with contracted meshes 3
    skeletor.skeletonize.by_teasar()+++noyesworks on mesh surface
    skeletor.skeletonize.by_tangent_ball()++0yesyesworks with mesh normals
    skeletor.skeletonize.by_edge_collapse()-0nonopublished with [1] - never got this to work well
    \n\n

    References

    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n\n
    \n
    \n
      \n
    1. \n

      use skeletor.pre.contract() 

      \n
    2. \n\n
    3. \n

      use skeletor.pre.contract() 

      \n
    4. \n\n
    5. \n

      radii can also be added in postprocessing with skeletor.post.radii() 

      \n
    6. \n\n
    7. \n

      a mapping from the meshes vertices to skeleton nodes 

      \n
    8. \n
    \n
    \n"}, "skeletor.skeletonize.by_teasar": {"fullname": "skeletor.skeletonize.by_teasar", "modulename": "skeletor.skeletonize", "qualname": "by_teasar", "kind": "function", "doc": "

    Skeletonize a mesh mesh using the TEASAR algorithm [1].

    \n\n

    This algorithm finds the longest path from a root vertex, invalidates all\nvertices that are within inv_dist. Then picks the second longest (and\nstill valid) path and does the same. Rinse & repeat until all vertices have\nbeen invalidated. It's fast + works very well with tubular meshes, and with\ninv_dist you have control over the level of detail. Note that by its\nnature the skeleton will be exactly on the surface of the mesh.

    \n\n

    Based on the implementation by Sven Dorkenwald, Casey Schneider-Mizell and\nForrest Collman in meshparty (https://github.com/sdorkenw/MeshParty).

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • inv_dist (int | float):\nDistance along the mesh used for invalidation of vertices.\nThis controls how detailed (or noisy) the skeleton will be.
    • \n
    • min_length (float, optional):\nIf provided, will skip any branch that is shorter than\nmin_length. Use this to get rid of noise but note that\nit will lead to vertices not being mapped to skeleton nodes.\nSuch vertices will show up with index -1 in\nSkeleton.mesh_map.
    • \n
    • root (int, optional):\nVertex ID of a root. If not provided will use 0.
    • \n
    • progress (bool, optional):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    References
    \n\n

    [1] Sato, M., Bitter, I., Bender, M. A., Kaufman, A. E., & Nakajima, M.\n (n.d.). TEASAR: tree-structure extraction algorithm for accurate and\n robust skeletons. In Proceedings the Eighth Pacific Conference on\n Computer Graphics and Applications. IEEE Comput. Soc.\n https://doi.org/10.1109/pccga.2000.883951

    \n", "signature": "(mesh, inv_dist, min_length=None, root=None, progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_wavefront": {"fullname": "skeletor.skeletonize.by_wavefront", "modulename": "skeletor.skeletonize", "qualname": "by_wavefront", "kind": "function", "doc": "

    Skeletonize a mesh using wave fronts.

    \n\n

    The algorithm tries to find rings of vertices and collapse them to\ntheir center. This is done by propagating a wave across the mesh starting at\na single seed vertex. As the wave travels across the mesh we keep track of\nwhich vertices are are encountered at each step. Groups of connected\nvertices that are \"hit\" by the wave at the same time are considered rings\nand subsequently collapsed. By its nature this works best with tubular meshes.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • waves (int):\nNumber of waves to run across the mesh. Each wave is\ninitialized at a different vertex which produces slightly\ndifferent rings. The final skeleton is produced from a mean\nacross all waves. More waves produce higher resolution\nskeletons but also introduce more noise.
    • \n
    • origins (int | list of ints, optional):\nVertex ID(s) where the wave(s) are initialized. If we run\nout of origins (either because less origins than waves\nor because no origin for one of the connected components)\nwill fall back to semi-random origin.
    • \n
    • step_size (int):\nValues greater 1 effectively lead to binning of rings. For\nexample a stepsize of 2 means that two adjacent vertex rings\nwill be collapsed to the same center. This can help reduce\nnoise in the skeleton (and as such counteracts a large\nnumber of waves).
    • \n
    • radius_agg (\"mean\" | \"median\" | \"max\" | \"min\" | \"percentile75\" | \"percentile25\"):\nFunction used to aggregate radii over sample (i.e. the\nvertices forming a ring that we collapse to its center).
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n", "signature": "(\tmesh,\twaves=1,\torigins=None,\tstep_size=1,\tradius_agg='mean',\tprogress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_vertex_clusters": {"fullname": "skeletor.skeletonize.by_vertex_clusters", "modulename": "skeletor.skeletonize", "qualname": "by_vertex_clusters", "kind": "function", "doc": "

    Skeletonize a (contracted) mesh by clustering vertices.

    \n\n

    The algorithm traverses the mesh graph and groups vertices together that\nare within a given distance to each other. This uses the geodesic\n(along-the-mesh) distance, not simply the Euclidean distance. Subsequently\nthese groups of vertices are collapsed and re-connected respecting the\ntopology of the input mesh.

    \n\n

    The graph traversal is fast and scales well, so this method is well suited\nfor meshes with lots of vertices. On the downside: this implementation is\nnot very clever and you might have to play around with the parameters\n(mostly sampling_dist) to get decent results.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • sampling_dist (float | int):\nMaximal distance at which vertices are clustered. This\nparameter should be tuned based on the resolution of your\nmesh (see Examples).
    • \n
    • cluster_pos (\"median\" | \"center\"):\nHow to determine the x/y/z coordinates of the collapsed\nvertex clusters (i.e. the skeleton's nodes)::

      \n\n
        \n
      • \"median\": Use the vertex closest to cluster's center of\nmass.
      • \n
      • \"center\": Use the center of mass. This makes for smoother\nskeletons but can lead to nodes outside the mesh.
      • \n
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> cont = sk.pre.contract(mesh, epsilon=0.1)\n>>> skel = sk.skeletonize.vertex_cluster(cont)\n>>> skel.mesh = mesh\n
    \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n", "signature": "(mesh, sampling_dist, cluster_pos='median', progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_edge_collapse": {"fullname": "skeletor.skeletonize.by_edge_collapse", "modulename": "skeletor.skeletonize", "qualname": "by_edge_collapse", "kind": "function", "doc": "

    Skeletonize a (contracted) mesh by iteratively collapsing edges.

    \n\n

    This algorithm (described in [1]) iteratively collapses edges that are part\nof a face until no more faces are left. Edges are chosen based on a cost\nfunction that penalizes collapses that would change the shape of the object\nor would introduce long edges.

    \n\n

    This is somewhat sensitive to the dimensions of the input mesh: too large\nand you might experience slow-downs or numpy OverflowErrors; too low and\nyou might get skeletons that don't quite match the mesh (e.g. too few nodes).\nIf you experience either, try down- or up-scaling your mesh, respectively.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • shape_weight (float, optional):\nWeight for shape costs which penalize collapsing edges that\nwould drastically change the shape of the object.
    • \n
    • sample_weight (float, optional):\nWeight for sampling costs which penalize collapses that\nwould generate prohibitively long edges.
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n", "signature": "(mesh, shape_weight=1, sample_weight=0.1, progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_tangent_ball": {"fullname": "skeletor.skeletonize.by_tangent_ball", "modulename": "skeletor.skeletonize", "qualname": "by_tangent_ball", "kind": "function", "doc": "

    Skeletonize a mesh by finding the maximal tangent ball.

    \n\n

    This algorithm casts a ray from every mesh vertex along its inverse normals\n(requires ncollpyde). It then creates a sphere that is tangent to the\nvertex and to where the ray hit the inside of a face on the opposite side.\nNext it drops spheres that overlap with another, larger sphere. Modified\nfrom [1].

    \n\n

    The method works best on smooth meshes and is rather sensitive to errors in\nthe mesh such as incorrect normals (see skeletor.pre.fix_mesh), internal\nfaces, noisy surface (try smoothing or downsampling) or holes in the mesh.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> fixed = sk.pre.fix_mesh(mesh, fix_normals=True, remove_disconnected=10)\n>>> skel = sk.skeletonize.by_tangent_ball(fixed)\n
    \n
    \n\n
    References
    \n\n

    [1] Ma, J., Bae, S.W. & Choi, S. 3D medial axis point approximation using\n nearest neighbors and the normal field. Vis Comput 28, 7\u201319 (2012).\n https://doi.org/10.1007/s00371-011-0594-7

    \n", "signature": "(mesh):", "funcdef": "def"}}, "docInfo": {"skeletor": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3013}, "skeletor.Skeleton": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 161}, "skeletor.Skeleton.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "skeletor.Skeleton.swc": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.mesh": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.mesh_map": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.method": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.edges": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "skeletor.Skeleton.vertices": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.radius": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5}, "skeletor.Skeleton.skeleton": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.skel_map": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 15}, "skeletor.Skeleton.leafs": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.reindex": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 6}, "skeletor.Skeleton.copy": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "skeletor.Skeleton.get_graph": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 34}, "skeletor.Skeleton.get_segments": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 130}, "skeletor.Skeleton.save_swc": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 29}, "skeletor.Skeleton.scene": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 35}, "skeletor.Skeleton.show": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 60}, "skeletor.Skeleton.mend_breaks": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 199}, "skeletor.example_mesh": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 158}, "skeletor.post": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 190}, "skeletor.post.radii": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 402}, "skeletor.post.clean_up": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 303}, "skeletor.post.smooth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 95, "bases": 0, "doc": 122}, "skeletor.post.despike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 189}, "skeletor.post.remove_bristles": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 156}, "skeletor.pre": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 143}, "skeletor.pre.fix_mesh": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 110, "bases": 0, "doc": 204}, "skeletor.pre.simplify": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 83}, "skeletor.pre.remesh": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 86}, "skeletor.pre.contract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 134, "bases": 0, "doc": 762}, "skeletor.skeletonize": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 437}, "skeletor.skeletonize.by_teasar": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 382}, "skeletor.skeletonize.by_wavefront": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 388}, "skeletor.skeletonize.by_vertex_clusters": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 477}, "skeletor.skeletonize.by_edge_collapse": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 297}, "skeletor.skeletonize.by_tangent_ball": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 390}}, "length": 39, "save": true}, "index": {"qualname": {"root": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 20}}}}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.method": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.edges": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.vertices": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.radius": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}}, "fullname": {"root": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 39}, "n": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 20, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}}}}}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.method": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.edges": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.vertices": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.radius": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 6}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"0": {"6": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "7": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}, "1": {"0": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "2": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "3": {"9": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.smooth": {"tf": 2.449489742783178}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 6}, "docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "5": {"0": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}, "docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 3}, "docs": {"skeletor.Skeleton.__init__": {"tf": 5.656854249492381}, "skeletor.Skeleton.reindex": {"tf": 4.242640687119285}, "skeletor.Skeleton.copy": {"tf": 3.1622776601683795}, "skeletor.Skeleton.get_graph": {"tf": 3.1622776601683795}, "skeletor.Skeleton.get_segments": {"tf": 5.291502622129181}, "skeletor.Skeleton.save_swc": {"tf": 3.7416573867739413}, "skeletor.Skeleton.scene": {"tf": 4.898979485566356}, "skeletor.Skeleton.show": {"tf": 4.898979485566356}, "skeletor.Skeleton.mend_breaks": {"tf": 5.830951894845301}, "skeletor.example_mesh": {"tf": 2.6457513110645907}, "skeletor.post.radii": {"tf": 7.615773105863909}, "skeletor.post.clean_up": {"tf": 6.324555320336759}, "skeletor.post.smooth": {"tf": 8.717797887081348}, "skeletor.post.despike": {"tf": 6.48074069840786}, "skeletor.post.remove_bristles": {"tf": 5.830951894845301}, "skeletor.pre.fix_mesh": {"tf": 9.1104335791443}, "skeletor.pre.simplify": {"tf": 3.7416573867739413}, "skeletor.pre.remesh": {"tf": 5.0990195135927845}, "skeletor.pre.contract": {"tf": 10.246950765959598}, "skeletor.skeletonize.by_teasar": {"tf": 6.164414002968976}, "skeletor.skeletonize.by_wavefront": {"tf": 7.615773105863909}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 5.656854249492381}, "skeletor.skeletonize.by_edge_collapse": {"tf": 5.830951894845301}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.1622776601683795}}, "df": 24, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 8}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1.4142135623730951}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}, "x": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 6}}}}}, "f": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "v": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}}, "df": 10}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}}}}, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "h": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "l": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 4}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "y": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "z": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"0": {"0": {"0": {"0": {"0": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"8": {"5": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"1": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "5": {"8": {"5": {"9": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"4": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 7, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "1": {"0": {"0": {"7": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"0": {"0": {"3": {"7": {"1": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "docs": {"skeletor": {"tf": 1}}, "df": 1}, "6": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"8": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}, "1": {"0": {"9": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "9": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"5": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"0": {"5": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"7": {"7": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"9": {"9": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"7": {"9": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"docs": {"skeletor.skeletonize": {"tf": 2}}, "df": 1}, "4": {"4": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"4": {"4": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 3.7416573867739413}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 11, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "2": {"0": {"0": {"0": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "docs": {}, "df": 0}, "1": {"2": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"0": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "2": {"0": {"7": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"6": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"2": {"1": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"4": {"7": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"4": {"0": {"7": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "8": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}, "3": {"1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "2": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "3": {"3": {"3": {"3": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"7": {"2": {"0": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"skeletor": {"tf": 2.449489742783178}}, "df": 1}, "docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}, "4": {"4": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "7": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}, "5": {"0": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}, "2": {"5": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"2": {"5": {"8": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"4": {"4": {"3": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}}, "df": 4}, "6": {"2": {"1": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "5": {"8": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"6": {"6": {"6": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"5": {"1": {"9": {"5": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"4": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "6": {"5": {"1": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2, "\u2013": {"1": {"9": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "8": {"6": {"1": {"7": {"docs": {"skeletor.skeletonize": {"tf": 2}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"3": {"9": {"5": {"1": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"0": {"2": {"3": {"4": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"6": {"0": {"1": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"8": {"5": {"1": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"2": {"1": {"1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 39.54743986657038}, "skeletor.Skeleton": {"tf": 8}, "skeletor.Skeleton.__init__": {"tf": 1.7320508075688772}, "skeletor.Skeleton.swc": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mesh": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mesh_map": {"tf": 1.7320508075688772}, "skeletor.Skeleton.method": {"tf": 1.7320508075688772}, "skeletor.Skeleton.edges": {"tf": 1.7320508075688772}, "skeletor.Skeleton.vertices": {"tf": 1.7320508075688772}, "skeletor.Skeleton.radius": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 2.23606797749979}, "skeletor.Skeleton.leafs": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reindex": {"tf": 1.7320508075688772}, "skeletor.Skeleton.copy": {"tf": 1.7320508075688772}, "skeletor.Skeleton.get_graph": {"tf": 4}, "skeletor.Skeleton.get_segments": {"tf": 7.211102550927978}, "skeletor.Skeleton.save_swc": {"tf": 3.872983346207417}, "skeletor.Skeleton.scene": {"tf": 3.872983346207417}, "skeletor.Skeleton.show": {"tf": 5.196152422706632}, "skeletor.Skeleton.mend_breaks": {"tf": 6.928203230275509}, "skeletor.example_mesh": {"tf": 8.366600265340756}, "skeletor.post": {"tf": 6.855654600401044}, "skeletor.post.radii": {"tf": 10}, "skeletor.post.clean_up": {"tf": 8.774964387392123}, "skeletor.post.smooth": {"tf": 6.855654600401044}, "skeletor.post.despike": {"tf": 7.745966692414834}, "skeletor.post.remove_bristles": {"tf": 7.211102550927978}, "skeletor.pre": {"tf": 5.0990195135927845}, "skeletor.pre.fix_mesh": {"tf": 8.366600265340756}, "skeletor.pre.simplify": {"tf": 5.916079783099616}, "skeletor.pre.remesh": {"tf": 6.4031242374328485}, "skeletor.pre.contract": {"tf": 12.36931687685298}, "skeletor.skeletonize": {"tf": 14.966629547095765}, "skeletor.skeletonize.by_teasar": {"tf": 9.539392014169456}, "skeletor.skeletonize.by_wavefront": {"tf": 9.16515138991168}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 14.247806848775006}, "skeletor.skeletonize.by_edge_collapse": {"tf": 8.366600265340756}, "skeletor.skeletonize.by_tangent_ball": {"tf": 13}}, "df": 39, "w": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "h": {"0": {"docs": {"skeletor.pre.contract": {"tf": 2}}, "df": 1}, "docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 9}}}}, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}}, "df": 4, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 3, "s": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 2}}}, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2.449489742783178}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_teasar": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 16}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.449489742783178}}, "df": 2, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 4}}}}}, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 2.449489742783178}}, "df": 2}}}, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 3}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}}, "df": 2}}}}, "l": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}}, "i": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 8, "s": {"docs": {"skeletor": {"tf": 4}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 9, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 19, "t": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 8, "o": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 3}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "v": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2.449489742783178}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 16}, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 13, "k": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 5, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 5.656854249492381}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 2.6457513110645907}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 3}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 15}, "n": {"docs": {"skeletor": {"tf": 4.69041575982343}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 2.6457513110645907}, "skeletor.post.smooth": {"tf": 2.449489742783178}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 26, "s": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 3.1622776601683795}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12}}}}}, "e": {"docs": {"skeletor": {"tf": 3}, "skeletor.post": {"tf": 1}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 8}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.8284271247461903}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.post.despike": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3.7416573867739413}, "skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2}}}}}, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 2.23606797749979}, "skeletor.Skeleton.show": {"tf": 2}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.despike": {"tf": 1.7320508075688772}}, "df": 1}}, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}, "t": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "l": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 2.23606797749979}}, "df": 1, "s": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 11, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 6}, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9}}}}, "p": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2.23606797749979}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 9}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "n": {"docs": {"skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 10, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 16}}}, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 4}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor": {"tf": 2}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "w": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 2.8284271247461903}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.3166247903554}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 14}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 3.1622776601683795}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 14}, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}}, "e": {"docs": {"skeletor": {"tf": 6.244997998398398}, "skeletor.Skeleton": {"tf": 2}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1.7320508075688772}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 3.872983346207417}, "skeletor.example_mesh": {"tf": 2}, "skeletor.post": {"tf": 3}, "skeletor.post.radii": {"tf": 3.4641016151377544}, "skeletor.post.clean_up": {"tf": 3.605551275463989}, "skeletor.post.smooth": {"tf": 2}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 6.324555320336759}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 3.7416573867739413}, "skeletor.skeletonize.by_wavefront": {"tf": 3.872983346207417}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 4.358898943540674}, "skeletor.skeletonize.by_edge_collapse": {"tf": 3}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.3166247903554}}, "df": 24, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.clean_up": {"tf": 1.7320508075688772}}, "df": 1}}, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"skeletor": {"tf": 6.244997998398398}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 4}, "skeletor.post.clean_up": {"tf": 2.8284271247461903}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 2.23606797749979}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.4641016151377544}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 3}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 23, "p": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 3, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 3}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 18}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 2}}}}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 5, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 4}}}, "i": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}, "w": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6, "o": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 5, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"1": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}}, "df": 2, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 6}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}}, "df": 2, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}}}, "h": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "s": {"docs": {"skeletor.skeletonize": {"tf": 2.449489742783178}}, "df": 1}}, "o": {"docs": {}, "df": 0, "u": {"docs": {"skeletor": {"tf": 3.3166247903554}, "skeletor.post": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 8, "r": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 9}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {"skeletor.post.despike": {"tf": 2}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 3.4641016151377544}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}}, "df": 2}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "/": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 4, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2}, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 7}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 13}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}}, "df": 2}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "u": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1, "n": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "i": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}}, "df": 5}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3}, "skeletor.example_mesh": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 8}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "y": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}}}}}}, "b": {"docs": {"skeletor.post.despike": {"tf": 2}}, "df": 1, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 7}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 14, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 6}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "y": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 14}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}}, "df": 3}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 13}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 6.782329983125268}, "skeletor.Skeleton": {"tf": 2.6457513110645907}, "skeletor.Skeleton.skel_map": {"tf": 1.4142135623730951}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 2.23606797749979}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2.8284271247461903}, "skeletor.post.clean_up": {"tf": 2.6457513110645907}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 2.6457513110645907}, "skeletor.pre.fix_mesh": {"tf": 3}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 4.242640687119285}, "skeletor.skeletonize": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3.7416573867739413}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.4641016151377544}}, "df": 22, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 3}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 8}}, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 4}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 3}, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.Skeleton": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 6, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "x": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 1}}}, "y": {"docs": {"skeletor": {"tf": 2.23606797749979}}, "df": 1}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 8}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "r": {"docs": {"skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}, "y": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7}}, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "+": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {"skeletor": {"tf": 10.63014581273465}, "skeletor.example_mesh": {"tf": 3}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3.872983346207417}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.4641016151377544}}, "df": 6}, "h": {"docs": {}, "df": 0, "z": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "l": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"skeletor": {"tf": 5.0990195135927845}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 2.8284271247461903}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.1622776601683795}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 3.3166247903554}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.6457513110645907}}, "df": 21, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 10, "d": {"docs": {"skeletor": {"tf": 4.123105625617661}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 3}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.23606797749979}}, "df": 17}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"skeletor.post.smooth": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "o": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 6}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 11, "a": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 11, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2}}, "df": 3}}}}, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}, "p": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "k": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 4}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.smooth": {"tf": 2}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 4.242640687119285}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_wavefront": {"tf": 3.3166247903554}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 25, "f": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 13, "g": {"docs": {}, "df": 0, "/": {"1": {"0": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "@": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 7}}, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 15, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 6}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 7}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 2.449489742783178}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 2.449489742783178}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 14, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 3}, "skeletor.skeletonize.by_wavefront": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 16}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 8}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_teasar": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.23606797749979}}, "df": 12}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 7}}, "l": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 15, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 12}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "{": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {"skeletor": {"tf": 3}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3}, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 4}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}}, "df": 2}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 9}}, "w": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}}, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}, "l": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 2.23606797749979}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 2.23606797749979}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2.449489742783178}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "f": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}, "skeletor.example_mesh": {"tf": 1.4142135623730951}}, "df": 2, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "w": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "r": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}}, "i": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 1}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "d": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "s": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}, "s": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 20}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.show": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 8}}}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.show": {"tf": 1.4142135623730951}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 3}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}}, "df": 2}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 4, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 20}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"3": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.skeleton": {"tf": 1}}, "df": 1}}, "docs": {"skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 3}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "p": {"3": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 2}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "o": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5}, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}}, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}}}, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1, "t": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.post": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1}}, "df": 3, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"2": {"5": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"5": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}, "h": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}}, "df": 2}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "x": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "z": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}, "z": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; + /** pdoc search index */const docs = {"version": "0.9.5", "fields": ["qualname", "fullname", "annotation", "default_value", "signature", "bases", "doc"], "ref": "fullname", "documentStore": {"docs": {"skeletor": {"fullname": "skeletor", "modulename": "skeletor", "kind": "module", "doc": "

    What is skeletor?

    \n\n

    Unlike its namesake, this skeletor\ndoes not (yet) seek to conquer Eternia but to turn meshes into skeletons.

    \n\n

    Before we get started some terminology:

    \n\n
      \n
    • a mesh is something that consists of vertices and faces
    • \n
    • a skeleton is a (hierarchical) tree-like structure consisting of vertices\n(also called nodes) and edges that connect them
    • \n
    \n\n

    Skeletons are useful for a range of reasons. For example:

    \n\n
      \n
    1. Typically smaller (less vertices) than the mesh
    2. \n
    3. Have an implicit sense of topology (e.g. \"this node is distal to that node\")
    4. \n
    \n\n

    Extracting skeletons from meshes (or other types of data such as voxels) is\nnon-trivial and there are a great many research papers exploring various\ndifferent approaches (see Google scholar).

    \n\n

    skeletor implements some algorithms that I found useful in my work with\nneurons. In my experience there is unfortuntely no magic bullet when it\ncomes to skeletonization and chances are you will have to fiddle around a bit\nto get decent results.

    \n\n

    Installation

    \n\n

    From PyPI:

    \n\n
    \n
    pip3 install skeletor\n
    \n
    \n\n

    For the bleeding-edge version from Github:

    \n\n
    \n
    pip3 install git+https://github.com/navis-org/skeletor@master\n
    \n
    \n\n

    Getting started

    \n\n

    A skeletonization pipeline typically consists of:

    \n\n
      \n
    1. Some pre-processing of the mesh (e.g. fixing some potential errors like\ndegenerate faces, unreferenced vertices, etc.)
    2. \n
    3. The skeletonization itself
    4. \n
    5. Some post-processing of the skeleton (e.g. adding radius information, smoothing, etc.)
    6. \n
    \n\n
    \n\n

    Here is a complete list of available functions:

    \n\n\n\n\n \n \n\n\n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n \n \n\n\n
    functiondescription
    example data
    skeletor.example_mesh()load an example mesh
    pre-processing
    skeletor.pre.fix_mesh()fix some common errors found in meshes
    skeletor.pre.remesh()re-generate mesh (uses Blender 3D)
    skeletor.pre.simplify()reduce mesh complexity (uses Blender 3D)
    skeletor.pre.contract()contract mesh to facilitate skeletonization [1]
    skeletonization
    skeletor.skeletonize.by_wavefront()very fast, works well for tubular meshes (like neurons)
    skeletor.skeletonize.by_vertex_clusters()very fast but needs mesh to be contracted (see above)
    skeletor.skeletonize.by_edge_collapse()presented in [1] but never got this to work well
    skeletor.skeletonize.by_teasar()very fast and robust, works on mesh surface
    skeletor.skeletonize.by_tangent_ball()very fast, best on smooth meshes
    postprocessing
    skeletor.post.clean_up()fix some potential errors in the skeleton
    skeletor.post.radii()add radius information using various method
    skeletor.post.smooth()smooth the skeleton
    skeletor.post.remove_bristles()remove single-node bristles from the skeleton
    skeletor.post.despike()smooth out jumps in the skeleton
    \n\n
    \n\n

    See docstrings of the respective functions for details.

    \n\n

    A pipeline might look like this:

    \n\n
      \n
    1. skeletor.pre.fix_mesh() to fix the mesh
    2. \n
    3. skeletor.pre.simplify() to simplify the mesh
    4. \n
    5. skeletor.pre.contract() to contract the mesh [1]
    6. \n
    7. skeletor.skeletonize.by_vertex_clusters() to generate a skeleton
    8. \n
    9. skeletor.post.clean_up() to clean up some potential issues with the skeleton
    10. \n
    11. skeletor.post.smooth() to smooth the skeleton
    12. \n
    13. skeletor.post.radii() to extract radii either by k-nearest neighbours or ray-casting
    14. \n
    \n\n

    In my experience there is no one-size-fits-all. You will have to play around to\nfind the right approach and parameters to get nice skeletons for your meshes.\nIf you need help just open an issue.

    \n\n

    Also check out the Gotchas below!

    \n\n

    Examples

    \n\n

    First load the example mesh (a fruit fly neuron):

    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> mesh\n<trimesh.Trimesh(vertices.shape=(6582, 3), faces.shape=(13772, 3))>\n
    \n
    \n\n

    Next see if there is stuff to fix in the mesh (degenerate faces, duplicate\nvertices, etc.):

    \n\n
    \n
    >>> fixed = sk.pre.fix_mesh(mesh, remove_disconnected=5, inplace=False)\n>>> fixed\n<trimesh.Trimesh(vertices.shape=(6213, 3), faces.shape=(12805, 3))>\n
    \n
    \n\n

    Now for tubular meshes like this neuron, the \"wave front\" skeletonization method\nperforms really well: it works by casting waves across the mesh and collapsing\nthe resulting rings into a skeleton (kinda like when you throw a stone in a\npond and track the expanding ripples).

    \n\n
    \n
    >>> skel = sk.skeletonize.by_wavefront(fixed, waves=1, step_size=1)\n>>> skel\n<Skeleton(vertices=(1258, 3), edges=(1194, 2), method=wavefront)>\n
    \n
    \n\n

    All skeletonization methods return a Skeleton object. These are just\nconvenient objects to bundle the various outputs of the skeletonization.

    \n\n
    \n
    >>> # x/y/z location of skeleton vertices (nodes)\n>>> skel.vertices\narray([[16744, 36720, 26407],\n       ...,\n       [22076, 23217, 24472]])\n>>> # child -> parent edges\n>>> skel.edges\narray([[  64,   31],\n       ...,\n       [1257, 1252]])\n>>> # Mapping for mesh to skeleton vertex indices\n>>> skel.mesh_map\narray([ 157,  158, 1062, ...,  525,  474,  547])\n>>> # SWC table\n>>> skel.swc.head()\n   node_id  parent_id             x             y             z    radius\n0        0         -1  16744.005859  36720.058594  26407.902344  0.000000\n1        1         -1   5602.751953  22266.756510  15799.991211  7.542587\n2        2         -1  16442.666667  14999.978516  10887.916016  5.333333\n
    \n
    \n\n

    SWC is a commonly used format for saving skeletons. Skeleton objects\nhave a method for quickly saving a correctly formatted SWC file:

    \n\n
    \n
    >>> skel.save_swc('~/Documents/my_skeleton.swc')\n
    \n
    \n\n

    If you installed pyglet (see above) you can also use trimesh's plotting\ncapabilities to inspect the results:

    \n\n
    \n
    >>> skel.show(mesh=True)\n
    \n
    \n\n

    \"skeletor_example\"

    \n\n

    That looks pretty good already but let's run some pro-forma postprocessing.

    \n\n
    \n
    >>> sk.post.clean_up(skel, inplace=True)\n<Skeleton(vertices=(1071, 3), edges=(1070, 2))>\n
    \n
    \n\n

    So that would be a full pipeline mesh to skeleton. Don't expect your own meshes\nto produce such nice results off the bat though. Chances are you will need to\nplay around to find the right recipe. If you don't know where to start, I suggest\nyou try out mesh contraction + vertex clustering first:

    \n\n
    \n
    >>> import skeletor as sk\n>>> # Load the example mesh that ships with skeletor\n>>> mesh = sk.example_mesh()\n>>> # Alternatively use trimesh to load/construct your own mesh:\n>>> # import trimesh as tm\n>>> # mesh = tm.Trimesh(vertices, faces)\n>>> # mesh = tm.load_mesh('some/mesh.obj')\n>>> # Run some general clean-up (see docstring for details)\n>>> fixed = sk.pre.fix_mesh(mesh, remove_disconnected=5, inplace=False)\n>>> # Contract mesh to 10% (0.1) of original volume\n>>> cont = sk.pre.contract(fixed, epsilon=0.1)\n>>> # Skeletonize\n>>> skel = sk.skeletonize.by_vertex_clusters(cont, sampling_dist=100)\n>>> # Replace contracted mesh with original for postprocessing and plotting\n>>> skel.mesh = fixed\n>>> # Add radii (vertex cluster method does not do that automatically)\n>>> sk.post.radii(skel, method='knn')\n>>> skel.show(mesh=True)\n
    \n
    \n\n

    Gotchas

    \n\n
      \n
    • while this is a general purpose library, my personal focus is on neurons and\nthis has certainly influenced things like default parameter values and certain\npost-processing steps
    • \n
    • meshes need to be triangular (we are using trimesh)
    • \n
    • use sk.pre.simplify if your mesh is very complex (half a million vertices is\nwhere things start getting sluggish)
    • \n
    • a good mesh contraction is often half the battle but it can be tricky to get\nto work
    • \n
    • if the mesh consists of multiple disconnected pieces the skeleton will\nlikewise be fragmented (i.e. will have multiple roots)
    • \n
    • it's often a good idea to fix issues with the skeleton in postprocessing rather\nthan trying to get the skeletonization to be perfect
    • \n
    \n\n

    Benchmarks

    \n\n

    \"skeletor_benchmark\"

    \n\n

    Benchmarks\nwere run on a 2018 MacBook Pro (2.2 GHz Core i7, 32Gb memory) with optional\nfastremap dependency installed. Note some of these functions (e.g.\ncontraction and TEASAR/vertex cluster skeletonization) vary a lot in\nspeed based on parameterization.

    \n\n

    What about algorithm X?

    \n\n

    skeletor contains some algorithms that I found easy enough to implement\nand useful for my work with neurons. If you have some interesting paper/approach\nthat could make a nice addition to skeletor, please get in touch on Github.\nPull requests are always welcome!

    \n\n

    References

    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n\n

    The abstract and the paper can be found here.\nAlso see this YouTube video.

    \n\n

    Some of the code in skeletor was modified from the\nPy_BL_MeshSkeletonization\naddon created by #0K Srinivasan Ramachandran and published under GPL3.

    \n\n

    Top-level functions and classes

    \n\n

    At top-level we only expose example_mesh() and the Skeleton class (which\nyou probably won't ever need to touch manually). Everything else is neatly\ntucked away into submodules (see side-bar or above table).

    \n"}, "skeletor.Skeleton": {"fullname": "skeletor.Skeleton", "modulename": "skeletor", "qualname": "Skeleton", "kind": "class", "doc": "

    Class representing a skeleton.

    \n\n

    Typically returned as results from a skeletonization.

    \n\n
    Attributes
    \n\n
      \n
    • swc (pd.DataFrame, optional):\nSWC table.
    • \n
    • vertices ((N, 3) array):\nVertex (node) positions.
    • \n
    • edges ((M, 2) array):\nIndices of connected vertex pairs.
    • \n
    • radii ((N, ) array, optional):\nRadii for each vertex (node) in the skeleton.
    • \n
    • mesh (trimesh, optional):\nThe original mesh.
    • \n
    • mesh_map (array, optional):\nSame length as mesh. Maps mesh vertices to vertices (nodes)\nin the skeleton.
    • \n
    • skel_map (array of arrays, optional):\nInverse of mesh_map: maps skeleton vertices (nodes) to mesh\nvertices.
    • \n
    • method (str, optional):\nWhich method was used to generate the skeleton.
    • \n
    \n"}, "skeletor.Skeleton.__init__": {"fullname": "skeletor.Skeleton.__init__", "modulename": "skeletor", "qualname": "Skeleton.__init__", "kind": "function", "doc": "

    \n", "signature": "(swc, mesh=None, mesh_map=None, method=None)"}, "skeletor.Skeleton.swc": {"fullname": "skeletor.Skeleton.swc", "modulename": "skeletor", "qualname": "Skeleton.swc", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.mesh": {"fullname": "skeletor.Skeleton.mesh", "modulename": "skeletor", "qualname": "Skeleton.mesh", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.mesh_map": {"fullname": "skeletor.Skeleton.mesh_map", "modulename": "skeletor", "qualname": "Skeleton.mesh_map", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.method": {"fullname": "skeletor.Skeleton.method", "modulename": "skeletor", "qualname": "Skeleton.method", "kind": "variable", "doc": "

    \n"}, "skeletor.Skeleton.edges": {"fullname": "skeletor.Skeleton.edges", "modulename": "skeletor", "qualname": "Skeleton.edges", "kind": "variable", "doc": "

    Return skeleton edges.

    \n"}, "skeletor.Skeleton.vertices": {"fullname": "skeletor.Skeleton.vertices", "modulename": "skeletor", "qualname": "Skeleton.vertices", "kind": "variable", "doc": "

    Return skeleton vertices (nodes).

    \n"}, "skeletor.Skeleton.radius": {"fullname": "skeletor.Skeleton.radius", "modulename": "skeletor", "qualname": "Skeleton.radius", "kind": "variable", "doc": "

    Return radii.

    \n"}, "skeletor.Skeleton.skeleton": {"fullname": "skeletor.Skeleton.skeleton", "modulename": "skeletor", "qualname": "Skeleton.skeleton", "kind": "variable", "doc": "

    Skeleton as trimesh Path3D.

    \n"}, "skeletor.Skeleton.skel_map": {"fullname": "skeletor.Skeleton.skel_map", "modulename": "skeletor", "qualname": "Skeleton.skel_map", "kind": "variable", "doc": "

    Skeleton vertex (nodes) to mesh vertices. Based on mesh_map.

    \n"}, "skeletor.Skeleton.roots": {"fullname": "skeletor.Skeleton.roots", "modulename": "skeletor", "qualname": "Skeleton.roots", "kind": "variable", "doc": "

    Root node(s).

    \n"}, "skeletor.Skeleton.leafs": {"fullname": "skeletor.Skeleton.leafs", "modulename": "skeletor", "qualname": "Skeleton.leafs", "kind": "variable", "doc": "

    Leaf nodes (includes root).

    \n"}, "skeletor.Skeleton.reindex": {"fullname": "skeletor.Skeleton.reindex", "modulename": "skeletor", "qualname": "Skeleton.reindex", "kind": "function", "doc": "

    Clean up skeleton.

    \n", "signature": "(self, inplace=False):", "funcdef": "def"}, "skeletor.Skeleton.reroot": {"fullname": "skeletor.Skeleton.reroot", "modulename": "skeletor", "qualname": "Skeleton.reroot", "kind": "function", "doc": "

    Reroot the skeleton.

    \n\n
    Parameters
    \n\n
      \n
    • new_root (int):\nIndex of node to use as new root. If the skeleton\nconsists of multiple trees, only the tree containing the\nnew root will be updated.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • Skeleton: Skeleton with new root.
    • \n
    \n", "signature": "(self, new_root):", "funcdef": "def"}, "skeletor.Skeleton.copy": {"fullname": "skeletor.Skeleton.copy", "modulename": "skeletor", "qualname": "Skeleton.copy", "kind": "function", "doc": "

    Return copy of the skeleton.

    \n", "signature": "(self):", "funcdef": "def"}, "skeletor.Skeleton.get_graph": {"fullname": "skeletor.Skeleton.get_graph", "modulename": "skeletor", "qualname": "Skeleton.get_graph", "kind": "function", "doc": "

    Generate networkX representation of the skeletons.

    \n\n

    Distance between nodes will be used as edge weights.

    \n\n
    Returns
    \n\n
      \n
    • networkx.DiGraph
    • \n
    \n", "signature": "(self):", "funcdef": "def"}, "skeletor.Skeleton.get_segments": {"fullname": "skeletor.Skeleton.get_segments", "modulename": "skeletor", "qualname": "Skeleton.get_segments", "kind": "function", "doc": "

    Generate a list of linear segments while maximizing segment lengths.

    \n\n
    Parameters
    \n\n
      \n
    • weight ('weight' | None, optional):\nIf \"weight\" use physical, geodesic length to determine\nsegment length. If None use number of nodes (faster).
    • \n
    • return_lengths (bool):\nIf True, also return lengths of segments according to weight.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • segments (list):\nSegments as list of lists containing node IDs. List is\nsorted by segment lengths.
    • \n
    • lengths (list):\nLength for each segment according to weight. Only provided\nif return_lengths is True.
    • \n
    \n", "signature": "(self, weight='weight', return_lengths=False):", "funcdef": "def"}, "skeletor.Skeleton.save_swc": {"fullname": "skeletor.Skeleton.save_swc", "modulename": "skeletor", "qualname": "Skeleton.save_swc", "kind": "function", "doc": "

    Save skeleton in SWC format.

    \n\n
    Parameters
    \n\n
      \n
    • filepath (path-like):\nFilepath to save SWC to.
    • \n
    \n", "signature": "(self, filepath):", "funcdef": "def"}, "skeletor.Skeleton.scene": {"fullname": "skeletor.Skeleton.scene", "modulename": "skeletor", "qualname": "Skeleton.scene", "kind": "function", "doc": "

    Return a Scene object containing the skeleton.

    \n\n
    Returns
    \n\n
      \n
    • scene (trimesh.scene.scene.Scene):\nContains the skeleton and optionally the mesh.
    • \n
    \n", "signature": "(self, mesh=False, **kwargs):", "funcdef": "def"}, "skeletor.Skeleton.show": {"fullname": "skeletor.Skeleton.show", "modulename": "skeletor", "qualname": "Skeleton.show", "kind": "function", "doc": "

    Render the skeleton in an opengl window. Requires pyglet.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (bool):\nIf True, will render transparent mesh on top of the\nskeleton.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • scene (trimesh.scene.Scene):\nScene with skeleton in it.
    • \n
    \n", "signature": "(self, mesh=False, **kwargs):", "funcdef": "def"}, "skeletor.Skeleton.mend_breaks": {"fullname": "skeletor.Skeleton.mend_breaks", "modulename": "skeletor", "qualname": "Skeleton.mend_breaks", "kind": "function", "doc": "

    Mend breaks in the skeleton using the original mesh.

    \n\n

    This works by comparing the connectivity of the original mesh with that\nof the skeleton. If the shortest path between two adjacent vertices on the mesh\nis shorter than the distance between the nodes in the skeleton, a new edge\nis added to the skeleton.

    \n\n
    Parameters
    \n\n
      \n
    • dist_mult (float, optional):\nFactor by which the new edge should be shorter than the\ncurrent shortest path between two nodes to be added.\nLower values = fewer false negatives; higher values = fewer\nfalse positive edges.
    • \n
    • dist_min (float, optional):\nMinimum distance between nodes to consider adding an edge.\nUse this to avoid adding very short edges.
    • \n
    • dist_max (float, optional):\nMaximum distance between nodes to consider adding an edge.\nUse this to avoid adding very long edges.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • edges ((N, 2) array):\nEdges connecting the skeleton nodes.
    • \n
    • vertices ((N, 3) array):\nPositions of the skeleton nodes.
    • \n
    \n", "signature": "(self, dist_mult=5, dist_min=0, dist_max=inf):", "funcdef": "def"}, "skeletor.example_mesh": {"fullname": "skeletor.example_mesh", "modulename": "skeletor", "qualname": "example_mesh", "kind": "function", "doc": "

    Load and return example mesh.

    \n\n

    The example mesh is a fruit fly neuron (an olfactory projection neuron of\nthe DA1 glomerulus) segmented from an EM image data set. It is part of the\nJanelia hemibrain data set (see here) [1].

    \n\n
    References
    \n\n

    [1] Louis K. Scheffer et al., eLife. 2020. doi: 10.7554/eLife.57443\nA connectome and analysis of the adult Drosophila central brain

    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> # Load this example mesh\n>>> mesh = sk.example_mesh()\n
    \n
    \n", "signature": "():", "funcdef": "def"}, "skeletor.post": {"fullname": "skeletor.post", "modulename": "skeletor.post", "kind": "module", "doc": "

    The skeletor.post module contains functions to post-process skeletons after\nskeletonization.

    \n\n

    Fixing issues with skeletons

    \n\n

    Depending on your mesh, pre-processing and the parameters you chose for\nskeletonization, chances are that your skeleton will not come out perfectly.

    \n\n

    skeletor.post.clean_up can help you solve some potential issues:

    \n\n
      \n
    • skeleton nodes (vertices) that outside or right on the surface instead of\ncentered inside the mesh
    • \n
    • superfluous \"hairs\" on otherwise straight bits
    • \n
    \n\n

    skeletor.post.smooth will smooth out the skeleton.

    \n\n

    skeletor.post.despike can help you remove spikes in the skeleton where\nsingle nodes are out of aligment.

    \n\n

    skeletor.post.remove_bristles will remove bristles from the skeleton.

    \n\n

    Computing radius information

    \n\n

    Only skeletor.skeletonize.by_wavefront() provides radii off the bat. For all\nother methods, you might want to run skeletor.post.radii can help you\n(re-)generate radius information for the skeletons.

    \n"}, "skeletor.post.radii": {"fullname": "skeletor.post.radii", "modulename": "skeletor.post", "qualname": "radii", "kind": "function", "doc": "

    Extract radii for given skeleton table.

    \n\n
    Important
    \n\n

    This function really only produces useful radii if the skeleton is centered\ninside the mesh. by_wavefront does that by default whereas all other\nskeletonization methods don't. Your best bet to get centered skeletons is\nto contract the mesh first (sk.pre.contract).

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • method (\"knn\" | \"ray\"):\nWhether and how to add radius information to each node::

      \n\n
      - \"knn\" uses k-nearest-neighbors to get radii: fast but\n  potential for being very wrong\n- \"ray\" uses ray-casting to get radii: slower but sometimes\n  less wrong\n
    • \n
    • aggregate (\"mean\" | \"median\" | \"max\" | \"min\" | \"percentile75\"):\nFunction used to aggregate radii over sample (i.e. across\nk nearest-neighbors or ray intersections)
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore skeletonization. Note that this might make changes to\nyour mesh inplace!
    • \n
    • **kwargs: Keyword arguments are passed to the respective method:
    • \n
    \n\n

    For method \"knn\"::

    \n\n
    n :             int (default 5)\n                Radius will be the mean over n nearest-neighbors.\n
    \n\n

    For method \"ray\"::

    \n\n
    n_rays :        int (default 20)\n                Number of rays to cast for each node.\nprojection :    \"sphere\" (default) | \"tangents\"\n                Whether to cast rays in a sphere around each node or in a\n                circle orthogonally to the node's tangent vector.\nfallback :      \"knn\" (default) | None | number\n                If a point is outside or right on the surface of the mesh\n                the raycasting will return nonesense results. We can either\n                ignore those cases (``None``), assign a arbitrary number or\n                we can fall back to radii from k-nearest-neighbors (``knn``).\n
    \n\n
    Returns
    \n\n
      \n
    • None: But attaches radius to the skeleton's SWC table. Existing\nvalues are replaced!
    • \n
    \n", "signature": "(\ts,\tmesh=None,\tmethod='knn',\taggregate='mean',\tvalidate=False,\t**kwargs):", "funcdef": "def"}, "skeletor.post.clean_up": {"fullname": "skeletor.post.clean_up", "modulename": "skeletor.post", "qualname": "clean_up", "kind": "function", "doc": "

    Clean up the skeleton.

    \n\n

    This function bundles a bunch of procedures to clean up the skeleton:

    \n\n
      \n
    1. Remove twigs that are running parallel to their parent branch
    2. \n
    3. Move nodes outside the mesh back inside (or at least snap to surface)
    4. \n
    \n\n

    Note that this is not a magic bullet and some of this will not work (well)\nif the original mesh was degenerate (e.g. internal faces or not watertight)\nto begin with.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore cleaning up. Note that this might change your mesh\ninplace!
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If True,\nwill modify the s inplace.
    • \n
    • **kwargs: Keyword arguments are passed to the bundled function.
    • \n
    \n\n

    For skeletor.postprocessing.drop_parallel_twigs::

    \n\n

    theta : float (default 0.01)\n For each twig we generate the dotproduct between the tangent\n vectors of it and its parents. If these line up perfectly the\n dotproduct will equal 1. theta determines how much that\n value can differ from 1 for us to still prune the twig: higher\n theta = more pruning.

    \n\n
    Returns
    \n\n
      \n
    • s_clean (skeletor.Skeleton):\nHopefully improved skeleton.
    • \n
    \n", "signature": "(s, mesh=None, validate=False, inplace=False, **kwargs):", "funcdef": "def"}, "skeletor.post.smooth": {"fullname": "skeletor.post.smooth", "modulename": "skeletor.post", "qualname": "smooth", "kind": "function", "doc": "

    Smooth skeleton using rolling windows.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to be processed.
    • \n
    • window (int, optional):\nSize (N observations) of the rolling window in number of\nnodes.
    • \n
    • to_smooth (list):\nColumns of the node table to smooth. Should work with any\nnumeric column (e.g. 'radius').
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If\nTrue, will modify the s inplace.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton with smoothed node table.
    • \n
    \n", "signature": "(\ts,\twindow: int = 3,\tto_smooth: list = ['x', 'y', 'z'],\tinplace: bool = False):", "funcdef": "def"}, "skeletor.post.despike": {"fullname": "skeletor.post.despike", "modulename": "skeletor.post", "qualname": "despike", "kind": "function", "doc": "

    Remove spikes in skeleton.

    \n\n

    For each node A, the euclidean distance to its next successor (parent)\nB and that node's successor C (i.e A->B->C) is computed. If\n\\( \\frac{dist(A,B)}{dist(A,C)}>sigma \\), node B is considered a spike\nand realigned between A and C.

    \n\n
    Parameters
    \n\n
      \n
    • x (skeletor.Skeleton):\nSkeleton to be processed.
    • \n
    • sigma (float | int, optional):\nThreshold for spike detection. Smaller sigma = more\naggressive spike detection.
    • \n
    • max_spike_length (int, optional):\nDetermines how long (# of nodes) a spike can be.
    • \n
    • inplace (bool, optional):\nIf False, a copy of the neuron is returned.
    • \n
    • reverse (bool, optional):\nIf True, will also walk the segments from proximal\nto distal. Use this to catch spikes on e.g. terminal\nnodes.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s skeletor.Skeleton: Despiked neuron.
    • \n
    \n", "signature": "(s, sigma=5, max_spike_length=1, inplace=False, reverse=False):", "funcdef": "def"}, "skeletor.post.remove_bristles": {"fullname": "skeletor.post.remove_bristles", "modulename": "skeletor.post", "qualname": "remove_bristles", "kind": "function", "doc": "

    Remove \"bristles\" that sometimes occurr along the backbone.

    \n\n

    Works by finding terminal twigs that consist of only a single node.

    \n\n
    Parameters
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton to clean up.
    • \n
    • mesh (trimesh.Trimesh, optional):\nOriginal mesh (e.g. before contraction). If not provided will\nuse the mesh associated with s.
    • \n
    • los_only (bool):\nIf True, will only remove bristles that are in line of sight of\ntheir parent. If False, will remove all single-node bristles.
    • \n
    • inplace (bool):\nIf False will make and return a copy of the skeleton. If True,\nwill modify the s inplace.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • s (skeletor.Skeleton):\nSkeleton with single-node twigs removed.
    • \n
    \n", "signature": "(s, mesh=None, los_only=False, inplace=False):", "funcdef": "def"}, "skeletor.pre": {"fullname": "skeletor.pre", "modulename": "skeletor.pre", "kind": "module", "doc": "

    The skeletor.pre module contains functions to pre-process meshes before\nskeletonization.

    \n\n

    Fixing faulty meshes

    \n\n

    Some skeletonization methods are susceptible to faulty meshes (degenerate faces,\nwrong normals, etc.). If your skeleton looks off, it might be worth a shot\ntrying to fix the mesh using skeletor.pre.fix_mesh().

    \n\n

    Mesh contraction

    \n\n

    As a rule of thumb: the more your mesh looks like a skeleton, the easier it is\nto extract one (duh). Mesh contraction using skeletor.pre.contract() [1] can\nhelp you to get your mesh \"in shape\".

    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n"}, "skeletor.pre.fix_mesh": {"fullname": "skeletor.pre.fix_mesh", "modulename": "skeletor.pre", "qualname": "fix_mesh", "kind": "function", "doc": "

    Try to fix some common problems with mesh.

    \n\n
      \n
    1. Remove infinite values
    2. \n
    3. Merge duplicate vertices
    4. \n
    5. Remove duplicate and degenerate faces
    6. \n
    7. Remove unreference vertices
    8. \n
    9. Drop winglets (faces that have only one adjacent face)
    10. \n
    11. Fix normals (Optional)
    12. \n
    13. Remove disconnected fragments (Optional)
    14. \n
    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh-like object):\nMesh to fix. Must have .vertices and .faces\nproperties.
    • \n
    • remove_disconnected (False | int):\nIf a number is given, will iterate over the mesh's\nconnected components and remove those consisting of\nless than the given number of vertices. For example,\nremove_disconnected=5 will drop parts of the\nmesh that consist of five or less connected\nvertices.
    • \n
    • inplace (bool):\nIf True, will perform fixes on the input mesh.\nIf False, will make a copy first. This is silently\nignored if mesh is not already a trimesh.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • fixed mesh (trimesh.Trimesh):
    • \n
    \n", "signature": "(\tmesh,\tremote_infinite=True,\tmerge_duplicate_verts=True,\tremove_degenerate_faces=True,\tremove_unreferenced_verts=True,\tdrop_winglets=True,\tfix_normals=False,\tremove_disconnected=False,\tinplace=False):", "funcdef": "def"}, "skeletor.pre.simplify": {"fullname": "skeletor.pre.simplify", "modulename": "skeletor.pre", "qualname": "simplify", "kind": "function", "doc": "

    Simplify mesh using Blender 3D.

    \n\n

    Uses Blender's \"decimate\" modifier in \"collapse\" mode.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (trimesh.Trimesh):\nMesh to simplify.
    • \n
    • ratio (float):\nFactor to which to reduce faces. For example, a ratio of 0.5 will\nreduce the number of faces to 50%.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Simplified mesh.
    • \n
    \n", "signature": "(mesh, ratio):", "funcdef": "def"}, "skeletor.pre.remesh": {"fullname": "skeletor.pre.remesh", "modulename": "skeletor.pre", "qualname": "remesh", "kind": "function", "doc": "

    Remesh mesh using Blender 3D.

    \n\n

    Uses Blender's \"remesh\" modifier in \"voxel\" mode.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (trimesh.Trimesh):\nMesh to remesh.
    • \n
    • voxel_size (float):\nSize of individual voxels (edge length).
    • \n
    • adaptivity (float):\nReduces final face count where detail is not important.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Remeshed mesh.
    • \n
    \n", "signature": "(mesh, voxel_size=50, adaptivity=5):", "funcdef": "def"}, "skeletor.pre.contract": {"fullname": "skeletor.pre.contract", "modulename": "skeletor.pre", "qualname": "contract", "kind": "function", "doc": "

    Contract mesh.

    \n\n

    In a nutshell: this function contracts the mesh by applying rounds of\n_constraint_ Laplacian smoothing. This function can be fairly expensive\nand I highly recommend you play around with SL to contract the\nmesh in as few steps as possible. The contraction doesn't have to be perfect\nfor good skeletonization results (<10%, i.e. epsilon<0.1).

    \n\n

    Also: parameterization matters a lot! Default parameters will get you there\nbut playing around with SL and WH0 might speed things up by an order of\nmagnitude.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be contracted. Can be any object (e.g.\na trimesh.Trimesh) that has .vertices and .faces\nproperties or a tuple (vertices, faces) or a dictionary\n{'vertices': vertices, 'faces': faces}.\nVertices and faces must be (N, 3) numpy arrays.
    • \n
    • epsilon (float (0-1), optional):\nTarget contraction rate as measured by the sum of all face\nareas in the contracted versus the original mesh. Algorithm\nwill stop once mesh is contracted below this threshold.\nDepending on your mesh (number of faces, shape) reaching a\nstrong contraction can be extremely costly with comparatively\nlittle benefit for the subsequent skeletonization. Note that\nthe algorithm might stop short of this target if iter_lim\nor time_lim is reached first or if the sum of face areas\nis increasing from one iteration to the next instead of\ndecreasing.
    • \n
    • iter_lim (int (>1), optional):\nMaximum rounds of contractions.
    • \n
    • time_lim (int, optional):\nMaximum run time in seconds. Note that this limit is not\nchecked during but after each round of contraction. Hence,\nthe actual total time will likely overshoot time_lim.
    • \n
    • precision (float, optional):\nSets the precision for finding the least-square solution.\nThis is the main determinant for speed vs quality: lower\nvalues will take (much) longer but will get you closer to an\noptimally contracted mesh. Higher values will be faster but\nthe iterative contractions might stop early.
    • \n
    • SL (float, optional):\nFactor by which the contraction matrix is multiplied for\neach iteration. Higher values = quicker contraction, lower\nvalues = more likely to get you an optimal contraction.
    • \n
    • WH0 (float, optional):\nInitial weight factor for the attraction constraints.\nThe ratio of the initial weights WL0 and WH0\ncontrols the smoothness and the degree of contraction of the\nfirst iteration result, thus it determines the amount of\ndetails retained in subsequent and final contracted meshes:\nhigher WH0 = more details retained.
    • \n
    • WL0 (\"auto\" | float):\nInitial weight factor for the contraction constraints. By\ndefault (\"auto\"), this will be set to 1e-3 * sqrt(A)\nwith A being the average face area. This ensures that\ncontraction forces scale with the coarseness of the mesh.
    • \n
    • operator (\"cotangent\" | \"umbrella\"):\nWhich Laplacian operator to use:

      \n\n
        \n
      • The \"cotangent\" operator (default) takes both topology\nand geometry of the mesh into account and is hence a\nbetter descriptor of the curvature flow. This is the\noperator used in the original paper.
      • \n
      • The \"umbrella\" operator (aka \"uniform weighting\") uses\nonly topological features of the mesh. This also makes\nit more robust against flaws in the mesh! Use it when\nthe cotangent operator produces oddly contracted meshes.
      • \n
    • \n
    • progress (bool):\nWhether or not to show a progress bar.
    • \n
    • validate (bool):\nIf True, will try to fix potential issues with the mesh\n(e.g. infinite values, duplicate vertices, degenerate faces)\nbefore collapsing. Degenerate meshes can lead to effectively\ninfinite runtime for this function!
    • \n
    \n\n
    Returns
    \n\n
      \n
    • trimesh.Trimesh: Contracted copy of original mesh. The final contraction rate\nis attached to the mesh as .epsilon property.
    • \n
    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n", "signature": "(\tmesh,\tepsilon=1e-06,\titer_lim=100,\ttime_lim=None,\tprecision=1e-07,\tSL=2,\tWH0=1,\tWL0='auto',\toperator='cotangent',\tprogress=True,\tvalidate=True):", "funcdef": "def"}, "skeletor.skeletonize": {"fullname": "skeletor.skeletonize", "modulename": "skeletor.skeletonize", "kind": "module", "doc": "

    The skeletor.skeletonize module contains functions to for skeletonization\nof meshes.

    \n\n

    There are several approaches to skeletonizing a mesh. Which one to pick depends\n(among other things) on the shape of your mesh and the skeleton quality you want\nto get out of it. In general, unless you mesh already looks like a tube I\nrecommend looking into mesh contraction 4.

    \n\n

    Please see the documentation of the individual functions for details but here\nis a quick summary:

    \n\n\n\n\n \n \n \n \n \n \n\n\n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n \n \n \n \n \n \n\n\n
    functionspeedrobustradii 1mesh map 2description
    skeletor.skeletonize.by_wavefront()+++++yesyesworks well for tubular meshes
    skeletor.skeletonize.by_vertex_clusters()+++noyesbest with contracted meshes 3
    skeletor.skeletonize.by_teasar()+++noyesworks on mesh surface
    skeletor.skeletonize.by_tangent_ball()++0yesyesworks with mesh normals
    skeletor.skeletonize.by_edge_collapse()-0nonopublished with [1] - never got this to work well
    \n\n

    References

    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n\n
    \n
    \n
      \n
    1. \n

      use skeletor.pre.contract() 

      \n
    2. \n\n
    3. \n

      use skeletor.pre.contract() 

      \n
    4. \n\n
    5. \n

      radii can also be added in postprocessing with skeletor.post.radii() 

      \n
    6. \n\n
    7. \n

      a mapping from the meshes vertices to skeleton nodes 

      \n
    8. \n
    \n
    \n"}, "skeletor.skeletonize.by_teasar": {"fullname": "skeletor.skeletonize.by_teasar", "modulename": "skeletor.skeletonize", "qualname": "by_teasar", "kind": "function", "doc": "

    Skeletonize a mesh mesh using the TEASAR algorithm [1].

    \n\n

    This algorithm finds the longest path from a root vertex, invalidates all\nvertices that are within inv_dist. Then picks the second longest (and\nstill valid) path and does the same. Rinse & repeat until all vertices have\nbeen invalidated. It's fast + works very well with tubular meshes, and with\ninv_dist you have control over the level of detail. Note that by its\nnature the skeleton will be exactly on the surface of the mesh.

    \n\n

    Based on the implementation by Sven Dorkenwald, Casey Schneider-Mizell and\nForrest Collman in meshparty (https://github.com/sdorkenw/MeshParty).

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • inv_dist (int | float):\nDistance along the mesh used for invalidation of vertices.\nThis controls how detailed (or noisy) the skeleton will be.
    • \n
    • min_length (float, optional):\nIf provided, will skip any branch that is shorter than\nmin_length. Use this to get rid of noise but note that\nit will lead to vertices not being mapped to skeleton nodes.\nSuch vertices will show up with index -1 in\nSkeleton.mesh_map.
    • \n
    • root (int, optional):\nVertex ID of a root. If not provided will use 0.
    • \n
    • progress (bool, optional):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    References
    \n\n

    [1] Sato, M., Bitter, I., Bender, M. A., Kaufman, A. E., & Nakajima, M.\n (n.d.). TEASAR: tree-structure extraction algorithm for accurate and\n robust skeletons. In Proceedings the Eighth Pacific Conference on\n Computer Graphics and Applications. IEEE Comput. Soc.\n https://doi.org/10.1109/pccga.2000.883951

    \n", "signature": "(mesh, inv_dist, min_length=None, root=None, progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_wavefront": {"fullname": "skeletor.skeletonize.by_wavefront", "modulename": "skeletor.skeletonize", "qualname": "by_wavefront", "kind": "function", "doc": "

    Skeletonize a mesh using wave fronts.

    \n\n

    The algorithm tries to find rings of vertices and collapse them to\ntheir center. This is done by propagating a wave across the mesh starting at\na single seed vertex. As the wave travels across the mesh we keep track of\nwhich vertices are are encountered at each step. Groups of connected\nvertices that are \"hit\" by the wave at the same time are considered rings\nand subsequently collapsed. By its nature this works best with tubular meshes.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • waves (int):\nNumber of waves to run across the mesh. Each wave is\ninitialized at a different vertex which produces slightly\ndifferent rings. The final skeleton is produced from a mean\nacross all waves. More waves produce higher resolution\nskeletons but also introduce more noise.
    • \n
    • origins (int | list of ints, optional):\nVertex ID(s) where the wave(s) are initialized. If we run\nout of origins (either because less origins than waves\nor because no origin for one of the connected components)\nwill fall back to semi-random origin.
    • \n
    • step_size (int):\nValues greater 1 effectively lead to binning of rings. For\nexample a stepsize of 2 means that two adjacent vertex rings\nwill be collapsed to the same center. This can help reduce\nnoise in the skeleton (and as such counteracts a large\nnumber of waves).
    • \n
    • radius_agg (\"mean\" | \"median\" | \"max\" | \"min\" | \"percentile75\" | \"percentile25\"):\nFunction used to aggregate radii over sample (i.e. the\nvertices forming a ring that we collapse to its center).
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n", "signature": "(\tmesh,\twaves=1,\torigins=None,\tstep_size=1,\tradius_agg='mean',\tprogress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_vertex_clusters": {"fullname": "skeletor.skeletonize.by_vertex_clusters", "modulename": "skeletor.skeletonize", "qualname": "by_vertex_clusters", "kind": "function", "doc": "

    Skeletonize a (contracted) mesh by clustering vertices.

    \n\n

    The algorithm traverses the mesh graph and groups vertices together that\nare within a given distance to each other. This uses the geodesic\n(along-the-mesh) distance, not simply the Euclidean distance. Subsequently\nthese groups of vertices are collapsed and re-connected respecting the\ntopology of the input mesh.

    \n\n

    The graph traversal is fast and scales well, so this method is well suited\nfor meshes with lots of vertices. On the downside: this implementation is\nnot very clever and you might have to play around with the parameters\n(mostly sampling_dist) to get decent results.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • sampling_dist (float | int):\nMaximal distance at which vertices are clustered. This\nparameter should be tuned based on the resolution of your\nmesh (see Examples).
    • \n
    • cluster_pos (\"median\" | \"center\"):\nHow to determine the x/y/z coordinates of the collapsed\nvertex clusters (i.e. the skeleton's nodes)::

      \n\n
        \n
      • \"median\": Use the vertex closest to cluster's center of\nmass.
      • \n
      • \"center\": Use the center of mass. This makes for smoother\nskeletons but can lead to nodes outside the mesh.
      • \n
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> cont = sk.pre.contract(mesh, epsilon=0.1)\n>>> skel = sk.skeletonize.vertex_cluster(cont)\n>>> skel.mesh = mesh\n
    \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n", "signature": "(mesh, sampling_dist, cluster_pos='median', progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_edge_collapse": {"fullname": "skeletor.skeletonize.by_edge_collapse", "modulename": "skeletor.skeletonize", "qualname": "by_edge_collapse", "kind": "function", "doc": "

    Skeletonize a (contracted) mesh by iteratively collapsing edges.

    \n\n

    This algorithm (described in [1]) iteratively collapses edges that are part\nof a face until no more faces are left. Edges are chosen based on a cost\nfunction that penalizes collapses that would change the shape of the object\nor would introduce long edges.

    \n\n

    This is somewhat sensitive to the dimensions of the input mesh: too large\nand you might experience slow-downs or numpy OverflowErrors; too low and\nyou might get skeletons that don't quite match the mesh (e.g. too few nodes).\nIf you experience either, try down- or up-scaling your mesh, respectively.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    • shape_weight (float, optional):\nWeight for shape costs which penalize collapsing edges that\nwould drastically change the shape of the object.
    • \n
    • sample_weight (float, optional):\nWeight for sampling costs which penalize collapses that\nwould generate prohibitively long edges.
    • \n
    • progress (bool):\nIf True, will show progress bar.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    References
    \n\n

    [1] Au OK, Tai CL, Chu HK, Cohen-Or D, Lee TY. Skeleton extraction by mesh\n contraction. ACM Transactions on Graphics (TOG). 2008 Aug 1;27(3):44.

    \n", "signature": "(mesh, shape_weight=1, sample_weight=0.1, progress=True):", "funcdef": "def"}, "skeletor.skeletonize.by_tangent_ball": {"fullname": "skeletor.skeletonize.by_tangent_ball", "modulename": "skeletor.skeletonize", "qualname": "by_tangent_ball", "kind": "function", "doc": "

    Skeletonize a mesh by finding the maximal tangent ball.

    \n\n

    This algorithm casts a ray from every mesh vertex along its inverse normals\n(requires ncollpyde). It then creates a sphere that is tangent to the\nvertex and to where the ray hit the inside of a face on the opposite side.\nNext it drops spheres that overlap with another, larger sphere. Modified\nfrom [1].

    \n\n

    The method works best on smooth meshes and is rather sensitive to errors in\nthe mesh such as incorrect normals (see skeletor.pre.fix_mesh), internal\nfaces, noisy surface (try smoothing or downsampling) or holes in the mesh.

    \n\n
    Parameters
    \n\n
      \n
    • mesh (mesh obj):\nThe mesh to be skeletonize. Can an object that has\n.vertices and .faces properties (e.g. a\ntrimesh.Trimesh) or a tuple (vertices, faces) or a\ndictionary {'vertices': vertices, 'faces': faces}.
    • \n
    \n\n
    Returns
    \n\n
      \n
    • skeletor.Skeleton: Holds results of the skeletonization and enables quick\nvisualization.
    • \n
    \n\n
    Examples
    \n\n
    \n
    >>> import skeletor as sk\n>>> mesh = sk.example_mesh()\n>>> fixed = sk.pre.fix_mesh(mesh, fix_normals=True, remove_disconnected=10)\n>>> skel = sk.skeletonize.by_tangent_ball(fixed)\n
    \n
    \n\n
    References
    \n\n

    [1] Ma, J., Bae, S.W. & Choi, S. 3D medial axis point approximation using\n nearest neighbors and the normal field. Vis Comput 28, 7\u201319 (2012).\n https://doi.org/10.1007/s00371-011-0594-7

    \n", "signature": "(mesh):", "funcdef": "def"}}, "docInfo": {"skeletor": {"qualname": 0, "fullname": 1, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3013}, "skeletor.Skeleton": {"qualname": 1, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 161}, "skeletor.Skeleton.__init__": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 40, "bases": 0, "doc": 3}, "skeletor.Skeleton.swc": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.mesh": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.mesh_map": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.method": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 3}, "skeletor.Skeleton.edges": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "skeletor.Skeleton.vertices": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.radius": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 5}, "skeletor.Skeleton.skeleton": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.skel_map": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 15}, "skeletor.Skeleton.roots": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 6}, "skeletor.Skeleton.leafs": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 7}, "skeletor.Skeleton.reindex": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 21, "bases": 0, "doc": 6}, "skeletor.Skeleton.reroot": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 17, "bases": 0, "doc": 64}, "skeletor.Skeleton.copy": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 8}, "skeletor.Skeleton.get_graph": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 34}, "skeletor.Skeleton.get_segments": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 36, "bases": 0, "doc": 130}, "skeletor.Skeleton.save_swc": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 29}, "skeletor.Skeleton.scene": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 35}, "skeletor.Skeleton.show": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 28, "bases": 0, "doc": 60}, "skeletor.Skeleton.mend_breaks": {"qualname": 3, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 199}, "skeletor.example_mesh": {"qualname": 2, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 7, "bases": 0, "doc": 158}, "skeletor.post": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 190}, "skeletor.post.radii": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 72, "bases": 0, "doc": 402}, "skeletor.post.clean_up": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 303}, "skeletor.post.smooth": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 95, "bases": 0, "doc": 122}, "skeletor.post.despike": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 53, "bases": 0, "doc": 189}, "skeletor.post.remove_bristles": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 156}, "skeletor.pre": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 143}, "skeletor.pre.fix_mesh": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 110, "bases": 0, "doc": 204}, "skeletor.pre.simplify": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 16, "bases": 0, "doc": 83}, "skeletor.pre.remesh": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 32, "bases": 0, "doc": 86}, "skeletor.pre.contract": {"qualname": 1, "fullname": 3, "annotation": 0, "default_value": 0, "signature": 134, "bases": 0, "doc": 762}, "skeletor.skeletonize": {"qualname": 0, "fullname": 2, "annotation": 0, "default_value": 0, "signature": 0, "bases": 0, "doc": 437}, "skeletor.skeletonize.by_teasar": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 48, "bases": 0, "doc": 382}, "skeletor.skeletonize.by_wavefront": {"qualname": 2, "fullname": 4, "annotation": 0, "default_value": 0, "signature": 73, "bases": 0, "doc": 388}, "skeletor.skeletonize.by_vertex_clusters": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 42, "bases": 0, "doc": 477}, "skeletor.skeletonize.by_edge_collapse": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 44, "bases": 0, "doc": 297}, "skeletor.skeletonize.by_tangent_ball": {"qualname": 3, "fullname": 5, "annotation": 0, "default_value": 0, "signature": 11, "bases": 0, "doc": 390}}, "length": 41, "save": true}, "index": {"qualname": {"root": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.roots": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 22}}}}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.method": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.edges": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.vertices": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.radius": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.roots": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}}, "fullname": {"root": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.roots": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 41}, "n": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.method": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.roots": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 22, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}}}}}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.swc": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.mesh": {"tf": 1}, "skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 4}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.method": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.mesh_map": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.edges": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.vertices": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.radius": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.roots": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 6}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}}, "annotation": {"root": {"docs": {}, "df": 0}}, "default_value": {"root": {"docs": {}, "df": 0}}, "signature": {"root": {"0": {"6": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "7": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}, "1": {"0": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 4, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "2": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "3": {"9": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.smooth": {"tf": 2.449489742783178}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 6}, "docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "5": {"0": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}, "docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 3}, "docs": {"skeletor.Skeleton.__init__": {"tf": 5.656854249492381}, "skeletor.Skeleton.reindex": {"tf": 4.242640687119285}, "skeletor.Skeleton.reroot": {"tf": 3.7416573867739413}, "skeletor.Skeleton.copy": {"tf": 3.1622776601683795}, "skeletor.Skeleton.get_graph": {"tf": 3.1622776601683795}, "skeletor.Skeleton.get_segments": {"tf": 5.291502622129181}, "skeletor.Skeleton.save_swc": {"tf": 3.7416573867739413}, "skeletor.Skeleton.scene": {"tf": 4.898979485566356}, "skeletor.Skeleton.show": {"tf": 4.898979485566356}, "skeletor.Skeleton.mend_breaks": {"tf": 5.830951894845301}, "skeletor.example_mesh": {"tf": 2.6457513110645907}, "skeletor.post.radii": {"tf": 7.615773105863909}, "skeletor.post.clean_up": {"tf": 6.324555320336759}, "skeletor.post.smooth": {"tf": 8.717797887081348}, "skeletor.post.despike": {"tf": 6.48074069840786}, "skeletor.post.remove_bristles": {"tf": 5.830951894845301}, "skeletor.pre.fix_mesh": {"tf": 9.1104335791443}, "skeletor.pre.simplify": {"tf": 3.7416573867739413}, "skeletor.pre.remesh": {"tf": 5.0990195135927845}, "skeletor.pre.contract": {"tf": 10.246950765959598}, "skeletor.skeletonize.by_teasar": {"tf": 6.164414002968976}, "skeletor.skeletonize.by_wavefront": {"tf": 7.615773105863909}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 5.656854249492381}, "skeletor.skeletonize.by_edge_collapse": {"tf": 5.830951894845301}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.1622776601683795}}, "df": 25, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 9}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1.4142135623730951}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1}}, "df": 1}, "x": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.__init__": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 6}}}}}, "f": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "v": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}}, "df": 10}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 1}}}}}}, "x": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "h": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "l": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "o": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "k": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 4}}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "y": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "z": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}}, "bases": {"root": {"docs": {}, "df": 0}}, "doc": {"root": {"0": {"0": {"0": {"0": {"0": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"8": {"5": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"1": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "5": {"8": {"5": {"9": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"4": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 7, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "1": {"0": {"0": {"7": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "s": {"0": {"0": {"3": {"7": {"1": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}, "docs": {"skeletor": {"tf": 1}}, "df": 1}, "6": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"8": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}, "1": {"0": {"9": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "9": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"5": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "8": {"0": {"5": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"7": {"7": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"9": {"9": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"7": {"9": {"9": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"docs": {"skeletor.skeletonize": {"tf": 2}}, "df": 1}, "4": {"4": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"4": {"4": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 3.7416573867739413}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 11, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "2": {"0": {"0": {"0": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "docs": {}, "df": 0}, "1": {"2": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "8": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "2": {"0": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "2": {"0": {"7": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "2": {"6": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "3": {"2": {"1": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"4": {"7": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"4": {"0": {"7": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "8": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}, "3": {"1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "2": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "3": {"3": {"3": {"3": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"7": {"2": {"0": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"docs": {"skeletor": {"tf": 2.449489742783178}}, "df": 1}, "docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}, "4": {"4": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "7": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}, "5": {"0": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}, "2": {"5": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "4": {"2": {"5": {"8": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "6": {"0": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"4": {"4": {"3": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}}, "df": 4}, "6": {"2": {"1": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "5": {"8": {"2": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "6": {"6": {"6": {"6": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"5": {"1": {"9": {"5": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "5": {"4": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "docs": {}, "df": 0}, "6": {"5": {"1": {"0": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2, "\u2013": {"1": {"9": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}, "8": {"6": {"1": {"7": {"docs": {"skeletor.skeletonize": {"tf": 2}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "8": {"3": {"9": {"5": {"1": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"0": {"2": {"3": {"4": {"4": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "1": {"6": {"0": {"1": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "7": {"8": {"5": {"1": {"6": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "9": {"1": {"2": {"1": {"1": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {}, "df": 0}, "docs": {"skeletor": {"tf": 39.54743986657038}, "skeletor.Skeleton": {"tf": 8}, "skeletor.Skeleton.__init__": {"tf": 1.7320508075688772}, "skeletor.Skeleton.swc": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mesh": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mesh_map": {"tf": 1.7320508075688772}, "skeletor.Skeleton.method": {"tf": 1.7320508075688772}, "skeletor.Skeleton.edges": {"tf": 1.7320508075688772}, "skeletor.Skeleton.vertices": {"tf": 1.7320508075688772}, "skeletor.Skeleton.radius": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 2.23606797749979}, "skeletor.Skeleton.roots": {"tf": 1.7320508075688772}, "skeletor.Skeleton.leafs": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reindex": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reroot": {"tf": 5.0990195135927845}, "skeletor.Skeleton.copy": {"tf": 1.7320508075688772}, "skeletor.Skeleton.get_graph": {"tf": 4}, "skeletor.Skeleton.get_segments": {"tf": 7.211102550927978}, "skeletor.Skeleton.save_swc": {"tf": 3.872983346207417}, "skeletor.Skeleton.scene": {"tf": 3.872983346207417}, "skeletor.Skeleton.show": {"tf": 5.196152422706632}, "skeletor.Skeleton.mend_breaks": {"tf": 6.928203230275509}, "skeletor.example_mesh": {"tf": 8.366600265340756}, "skeletor.post": {"tf": 6.855654600401044}, "skeletor.post.radii": {"tf": 10}, "skeletor.post.clean_up": {"tf": 8.774964387392123}, "skeletor.post.smooth": {"tf": 6.855654600401044}, "skeletor.post.despike": {"tf": 7.745966692414834}, "skeletor.post.remove_bristles": {"tf": 7.211102550927978}, "skeletor.pre": {"tf": 5.0990195135927845}, "skeletor.pre.fix_mesh": {"tf": 8.366600265340756}, "skeletor.pre.simplify": {"tf": 5.916079783099616}, "skeletor.pre.remesh": {"tf": 6.4031242374328485}, "skeletor.pre.contract": {"tf": 12.36931687685298}, "skeletor.skeletonize": {"tf": 14.966629547095765}, "skeletor.skeletonize.by_teasar": {"tf": 9.539392014169456}, "skeletor.skeletonize.by_wavefront": {"tf": 9.16515138991168}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 14.247806848775006}, "skeletor.skeletonize.by_edge_collapse": {"tf": 8.366600265340756}, "skeletor.skeletonize.by_tangent_ball": {"tf": 13}}, "df": 41, "w": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "h": {"0": {"docs": {"skeletor.pre.contract": {"tf": 2}}, "df": 1}, "docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "a": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 2}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 9}}}}, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}}, "df": 4, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 3, "s": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 2}}}, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 16, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2.449489742783178}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_teasar": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 17}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.449489742783178}}, "df": 2, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 4}}}}}, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 2.449489742783178}}, "df": 2}}}, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 3}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}}}, "l": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}}, "df": 2}}}}, "l": {"0": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0}}, "i": {"7": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 8, "s": {"docs": {"skeletor": {"tf": 4}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 17, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 9, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 19, "t": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 9, "o": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 3}}}}}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 4}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 7}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "v": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2.449489742783178}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 17}, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "e": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.roots": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 14, "k": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 5, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 5.656854249492381}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 2.6457513110645907}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 3}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 15}, "n": {"docs": {"skeletor": {"tf": 4.69041575982343}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 2}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1.7320508075688772}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 2.6457513110645907}, "skeletor.post.smooth": {"tf": 2.449489742783178}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 27, "s": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 3.1622776601683795}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12}}}}}, "e": {"docs": {"skeletor": {"tf": 3}, "skeletor.post": {"tf": 1}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 8}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.8284271247461903}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2}}, "df": 1, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.post.despike": {"tf": 1}}, "df": 2}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "m": {"docs": {}, "df": 0, "i": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "o": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3.7416573867739413}, "skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2}}}}}, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "w": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}}}}}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.scene": {"tf": 2.23606797749979}, "skeletor.Skeleton.show": {"tf": 2}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}}, "df": 2}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}, "y": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.despike": {"tf": 1.7320508075688772}}, "df": 1}}, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}}, "df": 5}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}, "t": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "w": {"docs": {}, "df": 0, "c": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}}, "df": 2}}, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 3}}, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "l": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 2.23606797749979}}, "df": 1, "s": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 2}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 12, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 6}, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9}}}}, "p": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2.23606797749979}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 9, "d": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "n": {"docs": {"skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 6, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "k": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "j": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 10, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.roots": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.smooth": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}}, "df": 9, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 16}}}, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 4}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2}}}}, "e": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor": {"tf": 2}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}, "x": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}, "w": {"docs": {"skeletor.Skeleton.reroot": {"tf": 2}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 2}, "t": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 7}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 2.8284271247461903}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.3166247903554}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 14}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 3.1622776601683795}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 14}, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}}, "e": {"docs": {"skeletor": {"tf": 6.244997998398398}, "skeletor.Skeleton": {"tf": 2}, "skeletor.Skeleton.reroot": {"tf": 2}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1.7320508075688772}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 3.872983346207417}, "skeletor.example_mesh": {"tf": 2}, "skeletor.post": {"tf": 3}, "skeletor.post.radii": {"tf": 3.4641016151377544}, "skeletor.post.clean_up": {"tf": 3.605551275463989}, "skeletor.post.smooth": {"tf": 2}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 6.324555320336759}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 3.7416573867739413}, "skeletor.skeletonize.by_wavefront": {"tf": 3.872983346207417}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 4.358898943540674}, "skeletor.skeletonize.by_edge_collapse": {"tf": 3}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.3166247903554}}, "df": 25, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}, "i": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}, "t": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.post.clean_up": {"tf": 1.7320508075688772}}, "df": 1}}, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "b": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"skeletor": {"tf": 6.244997998398398}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 2.449489742783178}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 4}, "skeletor.post.clean_up": {"tf": 2.8284271247461903}, "skeletor.post.smooth": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 2.23606797749979}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.4641016151377544}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 3}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 24, "p": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1}}, "df": 2, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "o": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}}}, "e": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 3, "/": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3, "s": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 3}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 18}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 2}}}}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}}, "df": 2}}}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 5, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 4}}}, "i": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}, "w": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}}, "df": 2}}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6, "o": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 3, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "i": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 5, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}, "a": {"1": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}}, "df": 2, "f": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.simplify": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 6}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "b": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}}, "df": 2, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.despike": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 4}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}}}, "h": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "s": {"docs": {"skeletor.skeletonize": {"tf": 2.449489742783178}}, "df": 1}}, "o": {"docs": {}, "df": 0, "u": {"docs": {"skeletor": {"tf": 3.3166247903554}, "skeletor.post": {"tf": 2.23606797749979}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 8, "r": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 9}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {"skeletor.post.despike": {"tf": 2}}, "df": 1, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reroot": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 6, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 3.4641016151377544}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}}, "df": 3}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "/": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "x": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 4, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2}, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.copy": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 7}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 13}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "t": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}}, "df": 2}}}, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "u": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1, "n": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "i": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.reindex": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 6, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}}, "df": 2}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}}, "df": 2}}, "d": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}}, "df": 5}}}}, "x": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3}, "skeletor.example_mesh": {"tf": 2}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}}}}, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 2}}}}}}, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 4}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}}}}, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 8}}, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}}}}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "y": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}, "f": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}}}}}}}}, "b": {"docs": {"skeletor.post.despike": {"tf": 2}}, "df": 1, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 7}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 15, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 6}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 4}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}}, "df": 3}}}}}}, "y": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 14}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}}, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}}, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}}, "df": 3}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 13}}, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 6.782329983125268}, "skeletor.Skeleton": {"tf": 2.6457513110645907}, "skeletor.Skeleton.skel_map": {"tf": 1.4142135623730951}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 2.23606797749979}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2.8284271247461903}, "skeletor.post.clean_up": {"tf": 2.6457513110645907}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 2.6457513110645907}, "skeletor.pre.fix_mesh": {"tf": 3}, "skeletor.pre.simplify": {"tf": 2}, "skeletor.pre.remesh": {"tf": 2}, "skeletor.pre.contract": {"tf": 4.242640687119285}, "skeletor.skeletonize": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3.7416573867739413}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.4641016151377544}}, "df": 22, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 3}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 8}}, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 4}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 3}, "l": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "n": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 5, "p": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.Skeleton": {"tf": 1.4142135623730951}}, "df": 1}}, "c": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}}, "df": 6, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}, "x": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "x": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 1}}}, "y": {"docs": {"skeletor": {"tf": 2.23606797749979}}, "df": 1}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 8}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}, "z": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.reroot": {"tf": 1}}, "df": 2}, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "r": {"docs": {"skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}, "y": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 3}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}, "e": {"docs": {"skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 8, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7}}, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 1, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 6}}}}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}}, "df": 2}}}}}, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "+": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3}}}}, "t": {"docs": {"skeletor": {"tf": 10.63014581273465}, "skeletor.example_mesh": {"tf": 3}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3.872983346207417}, "skeletor.skeletonize.by_tangent_ball": {"tf": 3.4641016151377544}}, "df": 6}, "h": {"docs": {}, "df": 0, "z": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "p": {"docs": {}, "df": 0, "l": {"3": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}}, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}}}}, "a": {"docs": {"skeletor": {"tf": 5.0990195135927845}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 2.8284271247461903}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 3.1622776601683795}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 3.3166247903554}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.6457513110645907}}, "df": 21, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 10, "d": {"docs": {"skeletor": {"tf": 4.123105625617661}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.example_mesh": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1.7320508075688772}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 3}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.23606797749979}}, "df": 17}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"skeletor.post.smooth": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 3}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "l": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1, "s": {"docs": {}, "df": 0, "o": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 6}}, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}}, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}}, "df": 11, "a": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}}}, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "s": {"docs": {"skeletor": {"tf": 2}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.skeleton": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 12, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 2}}, "df": 2}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}, "j": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}}}}}, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "b": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "c": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2}}, "df": 3}}}}, "m": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5, "t": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "f": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "g": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}}}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}, "p": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "k": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "o": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 4}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.reroot": {"tf": 1.4142135623730951}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 2}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.example_mesh": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 2}, "skeletor.post.smooth": {"tf": 2}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 2}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 4.242640687119285}, "skeletor.skeletonize": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_wavefront": {"tf": 3.3166247903554}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 26, "f": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3}, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}, "r": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 13, "g": {"docs": {}, "df": 0, "/": {"1": {"0": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "@": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 1, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 7}}, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1.7320508075688772}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}}}, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}}}}, "n": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 15, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 6}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 8}}, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "p": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "g": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.show": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 2.449489742783178}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton": {"tf": 2.449489742783178}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 2}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 14, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.Skeleton.scene": {"tf": 1}}, "df": 1}}}}}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}}, "b": {"docs": {}, "df": 0, "j": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9, "s": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.smooth": {"tf": 1}}, "df": 1}}}}}}}}}}}, "w": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "l": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "f": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 2.23606797749979}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 2.23606797749979}, "skeletor.pre.contract": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 3}, "skeletor.skeletonize.by_wavefront": {"tf": 2.8284271247461903}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 3}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2}}, "df": 16}}}}, "e": {"docs": {}, "df": 0, "x": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.Skeleton": {"tf": 1.7320508075688772}, "skeletor.Skeleton.skel_map": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 8}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "y": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}}, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "x": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 3}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "o": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}}}}}}}}}}}, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "f": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5, "s": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_teasar": {"tf": 2}, "skeletor.skeletonize.by_wavefront": {"tf": 2}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 2}, "skeletor.skeletonize.by_edge_collapse": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 2.23606797749979}}, "df": 12}}, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}, "t": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}}, "df": 3}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}}, "df": 7}}, "l": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre": {"tf": 1.4142135623730951}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.post.clean_up": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.contract": {"tf": 2.8284271247461903}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 15, "m": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}}, "df": 2, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 12}, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}}, "df": 2}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "{": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}}}, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "x": {"docs": {"skeletor": {"tf": 3}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.pre.fix_mesh": {"tf": 1.7320508075688772}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.7320508075688772}}, "df": 7, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 3}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3}, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 3}}}, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}}}, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 4}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton.save_swc": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 7, "s": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize": {"tf": 1.4142135623730951}}, "df": 4}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}}, "df": 2}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 9}}, "w": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}, "a": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}, "a": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.449489742783178}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}}, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}, "l": {"docs": {}, "df": 0, "f": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}, "l": {"docs": {}, "df": 0, "p": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.pre": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "m": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 5}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}}, "l": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 5}}, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, ":": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "b": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "i": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "k": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2.6457513110645907}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 5, "w": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 2.23606797749979}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}, "b": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 2, "a": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "m": {"docs": {"skeletor.pre.contract": {"tf": 2.23606797749979}}, "df": 1, "i": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 4}}, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 5}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "h": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.post.despike": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5, "s": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 2.449489742783178}}, "df": 1}}}}}, "a": {"docs": {}, "df": 0, "f": {"docs": {"skeletor.Skeleton.leafs": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 4}}, "f": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 2}, "skeletor.example_mesh": {"tf": 1.4142135623730951}}, "df": 2, "/": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "o": {"docs": {}, "df": 0, "k": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre": {"tf": 1.4142135623730951}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}, "w": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 3, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}, "s": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}, "t": {"docs": {"skeletor": {"tf": 2}, "skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 2}, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "r": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "d": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 1.7320508075688772}, "skeletor.post.smooth": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 5}}, "i": {"docs": {"skeletor": {"tf": 2.23606797749979}, "skeletor.Skeleton": {"tf": 1.4142135623730951}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.post": {"tf": 1.4142135623730951}, "skeletor.post.radii": {"tf": 2.449489742783178}, "skeletor.skeletonize": {"tf": 1.7320508075688772}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 7}}}, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 3, "s": {"docs": {"skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 1}, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}}}}, "t": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}, "i": {"docs": {}, "df": 0, "o": {"docs": {"skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}, "e": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.Skeleton": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 9}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1}}}}}}}, "o": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}}}}, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1.7320508075688772}}, "df": 2, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1.7320508075688772}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1.7320508075688772}, "skeletor.pre.fix_mesh": {"tf": 2.6457513110645907}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7, "d": {"docs": {"skeletor.post.remove_bristles": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3, "s": {"docs": {"skeletor.pre.remesh": {"tf": 1}}, "df": 1}}}}}, "t": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.edges": {"tf": 1}, "skeletor.Skeleton.vertices": {"tf": 1}, "skeletor.Skeleton.radius": {"tf": 1}, "skeletor.Skeleton.copy": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1.7320508075688772}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 12, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}, "s": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_graph": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.scene": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 21}}}}, "a": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "o": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "d": {"docs": {"skeletor.post.radii": {"tf": 1}}, "df": 1}}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.Skeleton.get_graph": {"tf": 1}}, "df": 1}}}}}}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton.show": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}}}, "f": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.pre": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 8}}}}}}}}, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.reroot": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.Skeleton.show": {"tf": 1.4142135623730951}}, "df": 1}}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 4}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.Skeleton.roots": {"tf": 1}, "skeletor.Skeleton.leafs": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 2}, "skeletor.skeletonize.by_teasar": {"tf": 1.7320508075688772}}, "df": 4, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.smooth": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "i": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 3}}}, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 2.23606797749979}}, "df": 2}}, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "d": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}, "u": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}}, "df": 4, "n": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre": {"tf": 1}}, "df": 1}}}}, "p": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "/": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "h": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}}}}}}}, "r": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.reroot": {"tf": 1}, "skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.simplify": {"tf": 1}, "skeletor.pre.remesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 21}, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2}}}}}}}}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.clean_up": {"tf": 1.4142135623730951}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.despike": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}}, "df": 4, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {"skeletor.example_mesh": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}, "i": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}}}, "t": {"docs": {}, "df": 0, "h": {"3": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.skeleton": {"tf": 1}}, "df": 1}}, "docs": {"skeletor.Skeleton.save_swc": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 3}}, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1, "p": {"docs": {}, "df": 0, "i": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "g": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.Skeleton.show": {"tf": 1}}, "df": 2}}}}}, "i": {"docs": {}, "df": 0, "p": {"3": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}, "docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1.7320508075688772}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.skeletonize": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}, "r": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 3.605551275463989}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.pre": {"tf": 2}, "skeletor.skeletonize": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1.4142135623730951}}, "df": 7, "s": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}}, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "c": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}}, "df": 1}}}}}}}, "o": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.pre": {"tf": 1}}, "df": 2, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post": {"tf": 1}}, "df": 2}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.smooth": {"tf": 1}, "skeletor.post.despike": {"tf": 1}}, "df": 2}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}, "e": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}}, "d": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 3}, "d": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}, "b": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "l": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1}}}}}, "v": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}, "skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.post.remove_bristles": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}}, "df": 5}, "s": {"docs": {"skeletor.post": {"tf": 1}}, "df": 1}}}}}, "j": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1}}, "df": 2}}}}}}}, "x": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.post.despike": {"tf": 1}}, "df": 1}}}}}, "p": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 7}}}, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "a": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}}}}}}, "g": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.pre.contract": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_teasar": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_wavefront": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1.4142135623730951}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 5}}}}}, "h": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "v": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}}}}, "u": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.post.clean_up": {"tf": 1}}, "df": 1}}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1.7320508075688772}, "skeletor.post": {"tf": 1}, "skeletor.post.radii": {"tf": 1.4142135623730951}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 5}}}}}}}, "s": {"docs": {"skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 1, "t": {"docs": {"skeletor": {"tf": 3.4641016151377544}, "skeletor.post": {"tf": 2.6457513110645907}, "skeletor.skeletonize": {"tf": 1}}, "df": 3, "p": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 2}, "skeletor.post.clean_up": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 3}}}}}}}}}}}, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.Skeleton": {"tf": 1}, "skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 2}}}, "v": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.Skeleton.mend_breaks": {"tf": 1}}, "df": 1}}}}}, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}}, "n": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 2}}}}, "l": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}}, "o": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "g": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}}}}, "e": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "m": {"docs": {"skeletor.pre.fix_mesh": {"tf": 1}}, "df": 1, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "e": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1}, "skeletor.pre.contract": {"tf": 1}}, "df": 2, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.post": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}}, "s": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "c": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "e": {"2": {"5": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}, "docs": {}, "df": 0}, "7": {"5": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 2}, "docs": {}, "df": 0}, "docs": {}, "df": 0}}}}}}}}, "n": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "z": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1.4142135623730951}}, "df": 1, "s": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}}}}}}, "u": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "e": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}}, "l": {"docs": {}, "df": 0, "l": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "b": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "h": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "d": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}}, "d": {"docs": {"skeletor.Skeleton": {"tf": 1}}, "df": 1}, "h": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "s": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "l": {"docs": {"skeletor.Skeleton.get_segments": {"tf": 1}}, "df": 1}}}}}}}}, "j": {"docs": {"skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 1, "u": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "p": {"docs": {}, "df": 0, "s": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}, "s": {"docs": {}, "df": 0, "t": {"docs": {"skeletor": {"tf": 1.4142135623730951}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "e": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "a": {"docs": {"skeletor.example_mesh": {"tf": 1}}, "df": 1}}}}}}}, "k": {"docs": {"skeletor": {"tf": 1}, "skeletor.example_mesh": {"tf": 1}, "skeletor.post.radii": {"tf": 1.7320508075688772}}, "df": 3, "i": {"docs": {}, "df": 0, "n": {"docs": {}, "df": 0, "d": {"docs": {}, "df": 0, "a": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}}}, "n": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "w": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "n": {"docs": {"skeletor": {"tf": 1}, "skeletor.post.radii": {"tf": 2.23606797749979}}, "df": 2}}, "w": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "g": {"docs": {}, "df": 0, "s": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "w": {"docs": {}, "df": 0, "o": {"docs": {}, "df": 0, "r": {"docs": {}, "df": 0, "d": {"docs": {"skeletor.post.radii": {"tf": 1}, "skeletor.post.clean_up": {"tf": 1}}, "df": 2}}}}}, "e": {"docs": {}, "df": 0, "p": {"docs": {"skeletor.skeletonize.by_wavefront": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "f": {"docs": {}, "df": 0, "m": {"docs": {}, "df": 0, "a": {"docs": {}, "df": 0, "n": {"docs": {"skeletor.skeletonize.by_teasar": {"tf": 1}}, "df": 1}}}}}}}, "x": {"docs": {"skeletor": {"tf": 1.4142135623730951}, "skeletor.post.despike": {"tf": 1}}, "df": 2, "/": {"docs": {}, "df": 0, "y": {"docs": {}, "df": 0, "/": {"docs": {}, "df": 0, "z": {"docs": {"skeletor": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}}, "df": 2}}}}}, "z": {"docs": {"skeletor": {"tf": 1}}, "df": 1}, "q": {"docs": {}, "df": 0, "u": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "c": {"docs": {}, "df": 0, "k": {"docs": {"skeletor.skeletonize": {"tf": 1}, "skeletor.skeletonize.by_teasar": {"tf": 1}, "skeletor.skeletonize.by_wavefront": {"tf": 1}, "skeletor.skeletonize.by_vertex_clusters": {"tf": 1}, "skeletor.skeletonize.by_edge_collapse": {"tf": 1}, "skeletor.skeletonize.by_tangent_ball": {"tf": 1}}, "df": 6, "l": {"docs": {}, "df": 0, "y": {"docs": {"skeletor": {"tf": 1}}, "df": 1}}, "e": {"docs": {}, "df": 0, "r": {"docs": {"skeletor.pre.contract": {"tf": 1}}, "df": 1}}}}, "t": {"docs": {}, "df": 0, "e": {"docs": {"skeletor.skeletonize.by_edge_collapse": {"tf": 1}}, "df": 1}}}, "a": {"docs": {}, "df": 0, "l": {"docs": {}, "df": 0, "i": {"docs": {}, "df": 0, "t": {"docs": {}, "df": 0, "y": {"docs": {"skeletor.pre.contract": {"tf": 1}, "skeletor.skeletonize": {"tf": 1}}, "df": 2}}}}}}}}}}, "pipeline": ["trimmer"], "_isPrebuiltIndex": true}; // mirrored in build-search-index.js (part 1) // Also split on html tags. this is a cheap heuristic, but good enough. diff --git a/docs/skeletor.html b/docs/skeletor.html index 7173df1..d99f153 100644 --- a/docs/skeletor.html +++ b/docs/skeletor.html @@ -77,12 +77,18 @@

    API Documentation

  • skel_map
  • +
  • + roots +
  • leafs
  • reindex
  • +
  • + reroot +
  • copy
  • @@ -799,42 +805,42 @@

    Top-level functions and classes

    71 def __repr__(self): 72 """Return quick summary of the skeleton's geometry.""" 73 elements = [] - 74 if hasattr(self, 'vertices'): - 75 elements.append(f'vertices={self.vertices.shape}') - 76 if hasattr(self, 'edges'): - 77 elements.append(f'edges={self.edges.shape}') - 78 if hasattr(self, 'method'): - 79 elements.append(f'method={self.method}') + 74 if hasattr(self, "vertices"): + 75 elements.append(f"vertices={self.vertices.shape}") + 76 if hasattr(self, "edges"): + 77 elements.append(f"edges={self.edges.shape}") + 78 if hasattr(self, "method"): + 79 elements.append(f"method={self.method}") 80 return f'<Skeleton({", ".join(elements)})>' 81 82 @property 83 def edges(self): 84 """Return skeleton edges.""" - 85 return self.swc.loc[self.swc.parent_id >= 0, - 86 ['node_id', 'parent_id']].values - 87 - 88 @property - 89 def vertices(self): - 90 """Return skeleton vertices (nodes).""" - 91 return self.swc[['x', 'y', 'z']].values - 92 - 93 @property - 94 def radius(self): - 95 """Return radii.""" - 96 if 'radius' not in self.swc.columns: - 97 raise ValueError('No radius info found. Run `skeletor.post.radii()`' - 98 ' to get them.') - 99 return self.swc['radius'].values + 85 return self.swc.loc[self.swc.parent_id >= 0, ["node_id", "parent_id"]].values + 86 + 87 @property + 88 def vertices(self): + 89 """Return skeleton vertices (nodes).""" + 90 return self.swc[["x", "y", "z"]].values + 91 + 92 @property + 93 def radius(self): + 94 """Return radii.""" + 95 if "radius" not in self.swc.columns: + 96 raise ValueError( + 97 "No radius info found. Run `skeletor.post.radii()`" " to get them." + 98 ) + 99 return self.swc["radius"].values 100 101 @property 102 def skeleton(self): 103 """Skeleton as trimesh Path3D.""" -104 if not hasattr(self, '_skeleton'): +104 if not hasattr(self, "_skeleton"): 105 lines = [tm.path.entities.Line(e) for e in self.edges] 106 -107 self._skeleton = tm.path.Path3D(entities=lines, -108 vertices=self.vertices, -109 process=False) +107 self._skeleton = tm.path.Path3D( +108 entities=lines, vertices=self.vertices, process=False +109 ) 110 return self._skeleton 111 112 @property @@ -842,323 +848,388 @@

    Top-level functions and classes

    114 """Skeleton vertex (nodes) to mesh vertices. Based on `mesh_map`.""" 115 if isinstance(self.mesh_map, type(None)): 116 return None -117 return pd.DataFrame(self.mesh_map -118 ).reset_index(drop=False -119 ).groupby(0)['index'].apply(np.array -120 ).values -121 -122 @property -123 def leafs(self): -124 """Leaf nodes (includes root).""" -125 swc = self.swc -126 leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)] -127 return leafs.copy() -128 -129 def reindex(self, inplace=False): -130 """Clean up skeleton.""" -131 x = self -132 if not inplace: -133 x = x.copy() -134 -135 # Re-index to make node IDs continous again -136 x.swc, new_ids = reindex_swc(x.swc) -137 -138 # Update mesh map -139 if not isinstance(x.mesh_map, type(None)): -140 x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map]) -141 -142 if not inplace: -143 return x -144 -145 def copy(self): -146 """Return copy of the skeleton.""" -147 return Skeleton(swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None, -148 mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None, -149 mesh_map=self.mesh_map.copy() if not isinstance(self.mesh_map, type(None)) else None) -150 -151 def get_graph(self): -152 """Generate networkX representation of the skeletons. -153 -154 Distance between nodes will be used as edge weights. +117 return ( +118 pd.DataFrame(self.mesh_map) +119 .reset_index(drop=False) +120 .groupby(0)["index"] +121 .apply(np.array) +122 .values +123 ) +124 +125 @property +126 def roots(self): +127 """Root node(s).""" +128 return self.swc.loc[self.swc.parent_id < 0].index.values +129 +130 @property +131 def leafs(self): +132 """Leaf nodes (includes root).""" +133 swc = self.swc +134 leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)] +135 return leafs.copy() +136 +137 def reindex(self, inplace=False): +138 """Clean up skeleton.""" +139 x = self +140 if not inplace: +141 x = x.copy() +142 +143 # Re-index to make node IDs continous again +144 x.swc, new_ids = reindex_swc(x.swc) +145 +146 # Update mesh map +147 if not isinstance(x.mesh_map, type(None)): +148 x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map]) +149 +150 if not inplace: +151 return x +152 +153 def reroot(self, new_root): +154 """Reroot the skeleton. 155 -156 Returns -157 ------- -158 networkx.DiGraph -159 -160 """ -161 not_root = self.swc.parent_id >= 0 -162 nodes = self.swc.loc[not_root] -163 parents = self.swc.set_index('node_id').loc[self.swc.loc[not_root, 'parent_id'].values] -164 -165 dists = nodes[['x', 'y', 'z']].values - parents[['x', 'y', 'z']].values -166 dists = np.sqrt((dists ** 2).sum(axis=1)) +156 Parameters +157 ---------- +158 new_root : int +159 Index of node to use as new root. If the skeleton +160 consists of multiple trees, only the tree containing the +161 new root will be updated. +162 +163 Returns +164 ------- +165 Skeleton +166 Skeleton with new root. 167 -168 G = nx.DiGraph() -169 G.add_nodes_from(self.swc.node_id.values) -170 G.add_weighted_edges_from(zip(nodes.node_id.values, nodes.parent_id.values, dists)) -171 -172 return G +168 """ +169 assert new_root in self.swc.index.values, f"Node index {new_root} not in skeleton." +170 +171 # Make copy of self +172 x = self.copy() 173 -174 def get_segments(self, -175 weight = 'weight', -176 return_lengths = False): -177 """Generate a list of linear segments while maximizing segment lengths. -178 -179 Parameters -180 ---------- -181 weight : 'weight' | None, optional -182 If ``"weight"`` use physical, geodesic length to determine -183 segment length. If ``None`` use number of nodes (faster). -184 return_lengths : bool -185 If True, also return lengths of segments according to ``weight``. -186 -187 Returns -188 ------- -189 segments : list -190 Segments as list of lists containing node IDs. List is -191 sorted by segment lengths. -192 lengths : list -193 Length for each segment according to ``weight``. Only provided -194 if `return_lengths` is True. -195 -196 """ -197 assert weight in ('weight', None), f'Unable to use weight "{weight}"' +174 # Check if the new root is already a root +175 if new_root in x.roots: +176 return x +177 +178 # Get graph representation +179 G = x.get_graph() +180 +181 # Get the path from the new root to the current root (of the same tree) +182 for r in x.roots: +183 try: +184 path = nx.shortest_path(G, source=new_root, target=r) +185 break +186 except nx.NetworkXNoPath: +187 continue +188 +189 # Now we need to invert the path from the old root to the new root +190 new_parents = x.swc.set_index('node_id').parent_id.to_dict() +191 new_parents.update({c: p for p, c in zip(path[:-1], path[1:])}) +192 new_parents[new_root] = -1 +193 +194 # Update the SWC table +195 x.swc["parent_id"] = x.swc.node_id.map(new_parents) +196 +197 return x 198 -199 # Get graph representation -200 G = self.get_graph() -201 -202 # Get distances to root -203 dists = {} -204 for root in self.swc[self.swc.parent_id < 0].node_id.values: -205 dists.update(nx.shortest_path_length(G, target=root, weight=weight)) -206 -207 # Sort leaf nodes -208 endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values -209 endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True) -210 -211 seen: set = set() -212 sequences = [] -213 for nodeID in endNodeIDs: -214 sequence = [nodeID] -215 parents = list(G.successors(nodeID)) -216 while True: -217 if not parents: -218 break -219 parentID = parents[0] -220 sequence.append(parentID) -221 if parentID in seen: -222 break -223 seen.add(parentID) -224 parents = list(G.successors(parentID)) +199 def copy(self): +200 """Return copy of the skeleton.""" +201 return Skeleton( +202 swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None, +203 mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None, +204 mesh_map=self.mesh_map.copy() +205 if not isinstance(self.mesh_map, type(None)) +206 else None, +207 method=self.method, +208 ) +209 +210 def get_graph(self): +211 """Generate networkX representation of the skeletons. +212 +213 Distance between nodes will be used as edge weights. +214 +215 Returns +216 ------- +217 networkx.DiGraph +218 +219 """ +220 not_root = self.swc.parent_id >= 0 +221 nodes = self.swc.loc[not_root] +222 parents = self.swc.set_index("node_id").loc[ +223 self.swc.loc[not_root, "parent_id"].values +224 ] 225 -226 if len(sequence) > 1: -227 sequences.append(sequence) +226 dists = nodes[["x", "y", "z"]].values - parents[["x", "y", "z"]].values +227 dists = np.sqrt((dists**2).sum(axis=1)) 228 -229 # Sort sequences by length -230 lengths = [dists[s[0]] - dists[s[-1]] for s in sequences] -231 sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)] -232 -233 if return_lengths: -234 return sequences, sorted(lengths, reverse=True) -235 else: -236 return sequences -237 -238 def save_swc(self, filepath): -239 """Save skeleton in SWC format. -240 -241 Parameters -242 ---------- -243 filepath : path-like -244 Filepath to save SWC to. -245 -246 """ -247 header = dedent(f"""\ -248 # SWC format file -249 # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html -250 # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor) -251 # PointNo Label X Y Z Radius Parent -252 # Labels: -253 # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point -254 """) -255 -256 # Make copy of SWC table -257 swc = self.swc.copy() -258 -259 # Set all labels to undefined -260 swc['label'] = 0 -261 swc.loc[~swc.node_id.isin(swc.parent_id.values), 'label'] = 6 -262 n_childs = swc.groupby('parent_id').size() -263 bp = n_childs[n_childs > 1].index.values -264 swc.loc[swc.node_id.isin(bp), 'label'] = 5 -265 -266 # Add radius if missing -267 if 'radius' not in swc.columns: -268 swc['radius'] = 0 -269 -270 # Get things in order -271 swc = swc[['node_id', 'label', 'x', 'y', 'z', 'radius', 'parent_id']] -272 -273 # Adjust column titles -274 swc.columns = ['PointNo', 'Label', 'X', 'Y', 'Z', 'Radius', 'Parent'] -275 -276 with open(filepath, 'w') as file: -277 # Write header -278 file.write(header) -279 -280 # Write data -281 writer = csv.writer(file, delimiter=' ') -282 writer.writerows(swc.astype(str).values) -283 -284 def scene(self, mesh=False, **kwargs): -285 """Return a Scene object containing the skeleton. +229 G = nx.DiGraph() +230 G.add_nodes_from(self.swc.node_id.values) +231 G.add_weighted_edges_from( +232 zip(nodes.node_id.values, nodes.parent_id.values, dists) +233 ) +234 +235 return G +236 +237 def get_segments(self, weight="weight", return_lengths=False): +238 """Generate a list of linear segments while maximizing segment lengths. +239 +240 Parameters +241 ---------- +242 weight : 'weight' | None, optional +243 If ``"weight"`` use physical, geodesic length to determine +244 segment length. If ``None`` use number of nodes (faster). +245 return_lengths : bool +246 If True, also return lengths of segments according to ``weight``. +247 +248 Returns +249 ------- +250 segments : list +251 Segments as list of lists containing node IDs. List is +252 sorted by segment lengths. +253 lengths : list +254 Length for each segment according to ``weight``. Only provided +255 if `return_lengths` is True. +256 +257 """ +258 assert weight in ("weight", None), f'Unable to use weight "{weight}"' +259 +260 # Get graph representation +261 G = self.get_graph() +262 +263 # Get distances to root +264 dists = {} +265 for root in self.swc[self.swc.parent_id < 0].node_id.values: +266 dists.update(nx.shortest_path_length(G, target=root, weight=weight)) +267 +268 # Sort leaf nodes +269 endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values +270 endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True) +271 +272 seen: set = set() +273 sequences = [] +274 for nodeID in endNodeIDs: +275 sequence = [nodeID] +276 parents = list(G.successors(nodeID)) +277 while True: +278 if not parents: +279 break +280 parentID = parents[0] +281 sequence.append(parentID) +282 if parentID in seen: +283 break +284 seen.add(parentID) +285 parents = list(G.successors(parentID)) 286 -287 Returns -288 ------- -289 scene : trimesh.scene.scene.Scene -290 Contains the skeleton and optionally the mesh. -291 -292 """ -293 if mesh: -294 if isinstance(self.mesh, type(None)): -295 raise ValueError('Skeleton has no mesh.') -296 -297 self.mesh.visual.face_colors = [100, 100, 100, 100] +287 if len(sequence) > 1: +288 sequences.append(sequence) +289 +290 # Sort sequences by length +291 lengths = [dists[s[0]] - dists[s[-1]] for s in sequences] +292 sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)] +293 +294 if return_lengths: +295 return sequences, sorted(lengths, reverse=True) +296 else: +297 return sequences 298 -299 # Note the copy(): without it the transform in show() changes -300 # the original meshes -301 sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs) -302 else: -303 sc = tm.Scene(self.skeleton.copy(), **kwargs) -304 -305 return sc +299 def save_swc(self, filepath): +300 """Save skeleton in SWC format. +301 +302 Parameters +303 ---------- +304 filepath : path-like +305 Filepath to save SWC to. 306 -307 def show(self, mesh=False, **kwargs): -308 """Render the skeleton in an opengl window. Requires pyglet. -309 -310 Parameters -311 ---------- -312 mesh : bool -313 If True, will render transparent mesh on top of the -314 skeleton. -315 -316 Returns -317 -------- -318 scene : trimesh.scene.Scene -319 Scene with skeleton in it. -320 -321 """ -322 scene = self.scene(mesh=mesh) -323 -324 # I encountered some issues if object space is big and the easiest -325 # way to work around this is to apply a transform such that the -326 # coordinates have -5 to +5 bounds -327 fac = 5 / np.fabs(self.skeleton.bounds).max() -328 scene.apply_transform(np.diag([fac, fac, fac, 1])) -329 -330 return scene.show(**kwargs) -331 -332 def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf): -333 """Mend breaks in the skeleton using the original mesh. -334 -335 This works by comparing the connectivity of the original mesh with that -336 of the skeleton. If the shortest path between two adjacent vertices on the mesh -337 is shorter than the distance between the nodes in the skeleton, a new edge -338 is added to the skeleton. -339 -340 Parameters -341 ---------- -342 dist_mult : float, optional -343 Factor by which the new edge should be shorter than the -344 current shortest path between two nodes to be added. -345 Lower values = fewer false negatives; higher values = fewer -346 false positive edges. -347 dist_min : float, optional -348 Minimum distance between nodes to consider adding an edge. -349 Use this to avoid adding very short edges. -350 dist_max : float, optional -351 Maximum distance between nodes to consider adding an edge. -352 Use this to avoid adding very long edges. -353 -354 Returns -355 ------- -356 edges : (N, 2) array -357 Edges connecting the skeleton nodes. -358 vertices : (N, 3) array -359 Positions of the skeleton nodes. -360 -361 """ -362 # We need `.mesh_map` and `.mesh` to exist -363 if self.mesh_map is None: -364 raise ValueError('Skeleton must have a `mesh_map` to mend breaks.') -365 if self.mesh is None: -366 raise ValueError('Skeleton must have a `mesh` to mend breaks.') +307 """ +308 header = dedent(f"""\ +309 # SWC format file +310 # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html +311 # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor) +312 # PointNo Label X Y Z Radius Parent +313 # Labels: +314 # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point +315 """) +316 +317 # Make copy of SWC table +318 swc = self.swc.copy() +319 +320 # Set all labels to undefined +321 swc["label"] = 0 +322 swc.loc[~swc.node_id.isin(swc.parent_id.values), "label"] = 6 +323 n_childs = swc.groupby("parent_id").size() +324 bp = n_childs[n_childs > 1].index.values +325 swc.loc[swc.node_id.isin(bp), "label"] = 5 +326 +327 # Add radius if missing +328 if "radius" not in swc.columns: +329 swc["radius"] = 0 +330 +331 # Get things in order +332 swc = swc[["node_id", "label", "x", "y", "z", "radius", "parent_id"]] +333 +334 # Adjust column titles +335 swc.columns = ["PointNo", "Label", "X", "Y", "Z", "Radius", "Parent"] +336 +337 with open(filepath, "w") as file: +338 # Write header +339 file.write(header) +340 +341 # Write data +342 writer = csv.writer(file, delimiter=" ") +343 writer.writerows(swc.astype(str).values) +344 +345 def scene(self, mesh=False, **kwargs): +346 """Return a Scene object containing the skeleton. +347 +348 Returns +349 ------- +350 scene : trimesh.scene.scene.Scene +351 Contains the skeleton and optionally the mesh. +352 +353 """ +354 if mesh: +355 if isinstance(self.mesh, type(None)): +356 raise ValueError("Skeleton has no mesh.") +357 +358 self.mesh.visual.face_colors = [100, 100, 100, 100] +359 +360 # Note the copy(): without it the transform in show() changes +361 # the original meshes +362 sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs) +363 else: +364 sc = tm.Scene(self.skeleton.copy(), **kwargs) +365 +366 return sc 367 -368 # Make a copy of the mesh edges -369 edges = self.mesh.edges.copy() -370 # Map mesh vertices to skeleton vertices -371 edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]] -372 edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]] -373 # Deduplicate -374 edges = np.unique(edges, axis=0) -375 # Remove self edges -376 edges = edges[edges[:,0] != edges[:, 1]] -377 -378 G = self.get_graph().to_undirected() -379 -380 # Remove edges that are already in the skeleton -381 edges = np.array([e for e in edges if not G.has_edge(*e)]) -382 -383 # Calculate distance between these new edge candidates -384 dists = np.sqrt(((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1)) -385 -386 # Sort by distance (lowest first) -387 edges = edges[np.argsort(dists)] -388 dists = dists[np.argsort(dists)] -389 -390 for e, d in zip(edges, dists): -391 # Check if the new path would be shorter than the current shortest path -392 if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]): -393 continue -394 # Check if the distance is within bounds -395 elif d < dist_min: -396 continue -397 elif d > dist_max: -398 continue -399 # Add edge -400 G.add_edge(*e, weight=d) -401 -402 # The above may have introduced small triangles which we should try to remove -403 # by removing the longest edge in a triangle. I have also spotted more -404 # complex cases of four or more nodes forming false-positive loops but -405 # these will be harder to detect and remove. -406 -407 # First collect neighbors for each node -408 later_nbrs = {} -409 for node, neighbors in G.adjacency(): -410 later_nbrs[node] = {n for n in neighbors if n not in later_nbrs and n != node} -411 -412 # Go over each node -413 triangles = set() -414 for node1, neighbors in later_nbrs.items(): -415 # Go over each neighbor -416 for node2 in neighbors: -417 # Check if there is one or more third nodes that are connected to both -418 third_nodes = neighbors & later_nbrs[node2] -419 for node3 in third_nodes: -420 # Add triangle (sort to deduplicate) -421 triangles.add(tuple(sorted([node1, node2, node3]))) -422 -423 # Remove longest edge in each triangle -424 for t in triangles: -425 e1, e2, e3 = t[:2], t[1:], t[::2] -426 # Make sure all edges still exist (we may have already removed edges -427 # that were part of a previous triangle) -428 if any(not G.has_edge(*e) for e in (e1, e2, e3)): -429 continue -430 # Remove the longest edge -431 G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]['weight'])) -432 -433 return np.array(G.edges), self.vertices.copy() +368 def show(self, mesh=False, **kwargs): +369 """Render the skeleton in an opengl window. Requires pyglet. +370 +371 Parameters +372 ---------- +373 mesh : bool +374 If True, will render transparent mesh on top of the +375 skeleton. +376 +377 Returns +378 -------- +379 scene : trimesh.scene.Scene +380 Scene with skeleton in it. +381 +382 """ +383 scene = self.scene(mesh=mesh) +384 +385 # I encountered some issues if object space is big and the easiest +386 # way to work around this is to apply a transform such that the +387 # coordinates have -5 to +5 bounds +388 fac = 5 / np.fabs(self.skeleton.bounds).max() +389 scene.apply_transform(np.diag([fac, fac, fac, 1])) +390 +391 return scene.show(**kwargs) +392 +393 def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf): +394 """Mend breaks in the skeleton using the original mesh. +395 +396 This works by comparing the connectivity of the original mesh with that +397 of the skeleton. If the shortest path between two adjacent vertices on the mesh +398 is shorter than the distance between the nodes in the skeleton, a new edge +399 is added to the skeleton. +400 +401 Parameters +402 ---------- +403 dist_mult : float, optional +404 Factor by which the new edge should be shorter than the +405 current shortest path between two nodes to be added. +406 Lower values = fewer false negatives; higher values = fewer +407 false positive edges. +408 dist_min : float, optional +409 Minimum distance between nodes to consider adding an edge. +410 Use this to avoid adding very short edges. +411 dist_max : float, optional +412 Maximum distance between nodes to consider adding an edge. +413 Use this to avoid adding very long edges. +414 +415 Returns +416 ------- +417 edges : (N, 2) array +418 Edges connecting the skeleton nodes. +419 vertices : (N, 3) array +420 Positions of the skeleton nodes. +421 +422 """ +423 # We need `.mesh_map` and `.mesh` to exist +424 if self.mesh_map is None: +425 raise ValueError("Skeleton must have a `mesh_map` to mend breaks.") +426 if self.mesh is None: +427 raise ValueError("Skeleton must have a `mesh` to mend breaks.") +428 +429 # Make a copy of the mesh edges +430 edges = self.mesh.edges.copy() +431 # Map mesh vertices to skeleton vertices +432 edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]] +433 edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]] +434 # Deduplicate +435 edges = np.unique(edges, axis=0) +436 # Remove self edges +437 edges = edges[edges[:, 0] != edges[:, 1]] +438 +439 G = self.get_graph().to_undirected() +440 +441 # Remove edges that are already in the skeleton +442 edges = np.array([e for e in edges if not G.has_edge(*e)]) +443 +444 # Calculate distance between these new edge candidates +445 dists = np.sqrt( +446 ((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1) +447 ) +448 +449 # Sort by distance (lowest first) +450 edges = edges[np.argsort(dists)] +451 dists = dists[np.argsort(dists)] +452 +453 for e, d in zip(edges, dists): +454 # Check if the new path would be shorter than the current shortest path +455 if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]): +456 continue +457 # Check if the distance is within bounds +458 elif d < dist_min: +459 continue +460 elif d > dist_max: +461 continue +462 # Add edge +463 G.add_edge(*e, weight=d) +464 +465 # The above may have introduced small triangles which we should try to remove +466 # by removing the longest edge in a triangle. I have also spotted more +467 # complex cases of four or more nodes forming false-positive loops but +468 # these will be harder to detect and remove. +469 +470 # First collect neighbors for each node +471 later_nbrs = {} +472 for node, neighbors in G.adjacency(): +473 later_nbrs[node] = { +474 n for n in neighbors if n not in later_nbrs and n != node +475 } +476 +477 # Go over each node +478 triangles = set() +479 for node1, neighbors in later_nbrs.items(): +480 # Go over each neighbor +481 for node2 in neighbors: +482 # Check if there is one or more third nodes that are connected to both +483 third_nodes = neighbors & later_nbrs[node2] +484 for node3 in third_nodes: +485 # Add triangle (sort to deduplicate) +486 triangles.add(tuple(sorted([node1, node2, node3]))) +487 +488 # Remove longest edge in each triangle +489 for t in triangles: +490 e1, e2, e3 = t[:2], t[1:], t[::2] +491 # Make sure all edges still exist (we may have already removed edges +492 # that were part of a previous triangle) +493 if any(not G.has_edge(*e) for e in (e1, e2, e3)): +494 continue +495 # Remove the longest edge +496 G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]["weight"])) +497 +498 return np.array(G.edges), self.vertices.copy()
    @@ -1268,8 +1339,7 @@
    Attributes
    82    @property
     83    def edges(self):
     84        """Return skeleton edges."""
    -85        return self.swc.loc[self.swc.parent_id >= 0,
    -86                            ['node_id', 'parent_id']].values
    +85        return self.swc.loc[self.swc.parent_id >= 0, ["node_id", "parent_id"]].values
     
    @@ -1287,10 +1357,10 @@
    Attributes
    -
    88    @property
    -89    def vertices(self):
    -90        """Return skeleton vertices (nodes)."""
    -91        return self.swc[['x', 'y', 'z']].values
    +            
    87    @property
    +88    def vertices(self):
    +89        """Return skeleton vertices (nodes)."""
    +90        return self.swc[["x", "y", "z"]].values
     
    @@ -1308,13 +1378,14 @@
    Attributes
    -
    93    @property
    -94    def radius(self):
    -95        """Return radii."""
    -96        if 'radius' not in self.swc.columns:
    -97            raise ValueError('No radius info found. Run `skeletor.post.radii()`'
    -98                             ' to get them.')
    -99        return self.swc['radius'].values
    +            
    92    @property
    +93    def radius(self):
    +94        """Return radii."""
    +95        if "radius" not in self.swc.columns:
    +96            raise ValueError(
    +97                "No radius info found. Run `skeletor.post.radii()`" " to get them."
    +98            )
    +99        return self.swc["radius"].values
     
    @@ -1335,12 +1406,12 @@
    Attributes
    101    @property
     102    def skeleton(self):
     103        """Skeleton as trimesh Path3D."""
    -104        if not hasattr(self, '_skeleton'):
    +104        if not hasattr(self, "_skeleton"):
     105            lines = [tm.path.entities.Line(e) for e in self.edges]
     106
    -107            self._skeleton = tm.path.Path3D(entities=lines,
    -108                                            vertices=self.vertices,
    -109                                            process=False)
    +107            self._skeleton = tm.path.Path3D(
    +108                entities=lines, vertices=self.vertices, process=False
    +109            )
     110        return self._skeleton
     
    @@ -1364,10 +1435,13 @@
    Attributes
    114 """Skeleton vertex (nodes) to mesh vertices. Based on `mesh_map`.""" 115 if isinstance(self.mesh_map, type(None)): 116 return None -117 return pd.DataFrame(self.mesh_map -118 ).reset_index(drop=False -119 ).groupby(0)['index'].apply(np.array -120 ).values +117 return ( +118 pd.DataFrame(self.mesh_map) +119 .reset_index(drop=False) +120 .groupby(0)["index"] +121 .apply(np.array) +122 .values +123 )
    @@ -1375,6 +1449,27 @@
    Attributes
    + +
    + +
    + roots + + + +
    + +
    125    @property
    +126    def roots(self):
    +127        """Root node(s)."""
    +128        return self.swc.loc[self.swc.parent_id < 0].index.values
    +
    + + +

    Root node(s).

    +
    + +
    @@ -1385,12 +1480,12 @@
    Attributes
    -
    122    @property
    -123    def leafs(self):
    -124        """Leaf nodes (includes root)."""
    -125        swc = self.swc
    -126        leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)]
    -127        return leafs.copy()
    +            
    130    @property
    +131    def leafs(self):
    +132        """Leaf nodes (includes root)."""
    +133        swc = self.swc
    +134        leafs = swc[~swc.node_id.isin(swc.parent_id.values) | (swc.parent_id < 0)]
    +135        return leafs.copy()
     
    @@ -1410,21 +1505,21 @@
    Attributes
    -
    129    def reindex(self, inplace=False):
    -130        """Clean up skeleton."""
    -131        x = self
    -132        if not inplace:
    -133            x = x.copy()
    -134
    -135        # Re-index to make node IDs continous again
    -136        x.swc, new_ids = reindex_swc(x.swc)
    -137
    -138        # Update mesh map
    -139        if not isinstance(x.mesh_map, type(None)):
    -140            x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map])
    -141
    -142        if not inplace:
    -143            return x
    +            
    137    def reindex(self, inplace=False):
    +138        """Clean up skeleton."""
    +139        x = self
    +140        if not inplace:
    +141            x = x.copy()
    +142
    +143        # Re-index to make node IDs continous again
    +144        x.swc, new_ids = reindex_swc(x.swc)
    +145
    +146        # Update mesh map
    +147        if not isinstance(x.mesh_map, type(None)):
    +148            x.mesh_map = np.array([new_ids.get(i, i) for i in x.mesh_map])
    +149
    +150        if not inplace:
    +151            return x
     
    @@ -1432,6 +1527,85 @@
    Attributes
    + +
    + +
    + + def + reroot(self, new_root): + + + +
    + +
    153    def reroot(self, new_root):
    +154        """Reroot the skeleton.
    +155
    +156        Parameters
    +157        ----------
    +158        new_root :  int
    +159                    Index of node to use as new root. If the skeleton
    +160                    consists of multiple trees, only the tree containing the
    +161                    new root will be updated.
    +162
    +163        Returns
    +164        -------
    +165        Skeleton
    +166                    Skeleton with new root.
    +167
    +168        """
    +169        assert new_root in self.swc.index.values, f"Node index {new_root} not in skeleton."
    +170
    +171        # Make copy of self
    +172        x = self.copy()
    +173
    +174        # Check if the new root is already a root
    +175        if new_root in x.roots:
    +176            return x
    +177
    +178        # Get graph representation
    +179        G = x.get_graph()
    +180
    +181        # Get the path from the new root to the current root (of the same tree)
    +182        for r in x.roots:
    +183            try:
    +184                path = nx.shortest_path(G, source=new_root, target=r)
    +185                break
    +186            except nx.NetworkXNoPath:
    +187                continue
    +188
    +189        # Now we need to invert the path from the old root to the new root
    +190        new_parents = x.swc.set_index('node_id').parent_id.to_dict()
    +191        new_parents.update({c: p for p, c in zip(path[:-1], path[1:])})
    +192        new_parents[new_root] = -1
    +193
    +194        # Update the SWC table
    +195        x.swc["parent_id"] = x.swc.node_id.map(new_parents)
    +196
    +197        return x
    +
    + + +

    Reroot the skeleton.

    + +
    Parameters
    + + + +
    Returns
    + + +
    + +
    @@ -1444,11 +1618,16 @@
    Attributes
    -
    145    def copy(self):
    -146        """Return copy of the skeleton."""
    -147        return Skeleton(swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None,
    -148                        mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None,
    -149                        mesh_map=self.mesh_map.copy() if not isinstance(self.mesh_map, type(None)) else None)
    +            
    199    def copy(self):
    +200        """Return copy of the skeleton."""
    +201        return Skeleton(
    +202            swc=self.swc.copy() if not isinstance(self.swc, type(None)) else None,
    +203            mesh=self.mesh.copy() if not isinstance(self.mesh, type(None)) else None,
    +204            mesh_map=self.mesh_map.copy()
    +205            if not isinstance(self.mesh_map, type(None))
    +206            else None,
    +207            method=self.method,
    +208        )
     
    @@ -1468,28 +1647,32 @@
    Attributes
    -
    151    def get_graph(self):
    -152        """Generate networkX representation of the skeletons.
    -153
    -154        Distance between nodes will be used as edge weights.
    -155
    -156        Returns
    -157        -------
    -158        networkx.DiGraph
    -159
    -160        """
    -161        not_root = self.swc.parent_id >= 0
    -162        nodes = self.swc.loc[not_root]
    -163        parents = self.swc.set_index('node_id').loc[self.swc.loc[not_root, 'parent_id'].values]
    -164
    -165        dists = nodes[['x', 'y', 'z']].values - parents[['x', 'y', 'z']].values
    -166        dists = np.sqrt((dists ** 2).sum(axis=1))
    -167
    -168        G = nx.DiGraph()
    -169        G.add_nodes_from(self.swc.node_id.values)
    -170        G.add_weighted_edges_from(zip(nodes.node_id.values, nodes.parent_id.values, dists))
    -171
    -172        return G
    +            
    210    def get_graph(self):
    +211        """Generate networkX representation of the skeletons.
    +212
    +213        Distance between nodes will be used as edge weights.
    +214
    +215        Returns
    +216        -------
    +217        networkx.DiGraph
    +218
    +219        """
    +220        not_root = self.swc.parent_id >= 0
    +221        nodes = self.swc.loc[not_root]
    +222        parents = self.swc.set_index("node_id").loc[
    +223            self.swc.loc[not_root, "parent_id"].values
    +224        ]
    +225
    +226        dists = nodes[["x", "y", "z"]].values - parents[["x", "y", "z"]].values
    +227        dists = np.sqrt((dists**2).sum(axis=1))
    +228
    +229        G = nx.DiGraph()
    +230        G.add_nodes_from(self.swc.node_id.values)
    +231        G.add_weighted_edges_from(
    +232            zip(nodes.node_id.values, nodes.parent_id.values, dists)
    +233        )
    +234
    +235        return G
     
    @@ -1517,69 +1700,67 @@
    Returns
    -
    174    def get_segments(self,
    -175                     weight = 'weight',
    -176                     return_lengths = False):
    -177        """Generate a list of linear segments while maximizing segment lengths.
    -178
    -179        Parameters
    -180        ----------
    -181        weight :    'weight' | None, optional
    -182                    If ``"weight"`` use physical, geodesic length to determine
    -183                    segment length. If ``None`` use number of nodes (faster).
    -184        return_lengths : bool
    -185                    If True, also return lengths of segments according to ``weight``.
    -186
    -187        Returns
    -188        -------
    -189        segments :  list
    -190                    Segments as list of lists containing node IDs. List is
    -191                    sorted by segment lengths.
    -192        lengths :   list
    -193                    Length for each segment according to ``weight``. Only provided
    -194                    if `return_lengths` is True.
    -195
    -196        """
    -197        assert weight in ('weight', None), f'Unable to use weight "{weight}"'
    -198
    -199        # Get graph representation
    -200        G = self.get_graph()
    -201
    -202        # Get distances to root
    -203        dists = {}
    -204        for root in self.swc[self.swc.parent_id < 0].node_id.values:
    -205            dists.update(nx.shortest_path_length(G, target=root, weight=weight))
    -206
    -207        # Sort leaf nodes
    -208        endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values
    -209        endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True)
    -210
    -211        seen: set = set()
    -212        sequences = []
    -213        for nodeID in endNodeIDs:
    -214            sequence = [nodeID]
    -215            parents = list(G.successors(nodeID))
    -216            while True:
    -217                if not parents:
    -218                    break
    -219                parentID = parents[0]
    -220                sequence.append(parentID)
    -221                if parentID in seen:
    -222                    break
    -223                seen.add(parentID)
    -224                parents = list(G.successors(parentID))
    -225
    -226            if len(sequence) > 1:
    -227                sequences.append(sequence)
    -228
    -229        # Sort sequences by length
    -230        lengths = [dists[s[0]] - dists[s[-1]] for s in sequences]
    -231        sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)]
    -232
    -233        if return_lengths:
    -234            return sequences, sorted(lengths, reverse=True)
    -235        else:
    -236            return sequences
    +            
    237    def get_segments(self, weight="weight", return_lengths=False):
    +238        """Generate a list of linear segments while maximizing segment lengths.
    +239
    +240        Parameters
    +241        ----------
    +242        weight :    'weight' | None, optional
    +243                    If ``"weight"`` use physical, geodesic length to determine
    +244                    segment length. If ``None`` use number of nodes (faster).
    +245        return_lengths : bool
    +246                    If True, also return lengths of segments according to ``weight``.
    +247
    +248        Returns
    +249        -------
    +250        segments :  list
    +251                    Segments as list of lists containing node IDs. List is
    +252                    sorted by segment lengths.
    +253        lengths :   list
    +254                    Length for each segment according to ``weight``. Only provided
    +255                    if `return_lengths` is True.
    +256
    +257        """
    +258        assert weight in ("weight", None), f'Unable to use weight "{weight}"'
    +259
    +260        # Get graph representation
    +261        G = self.get_graph()
    +262
    +263        # Get distances to root
    +264        dists = {}
    +265        for root in self.swc[self.swc.parent_id < 0].node_id.values:
    +266            dists.update(nx.shortest_path_length(G, target=root, weight=weight))
    +267
    +268        # Sort leaf nodes
    +269        endNodeIDs = self.leafs[self.leafs.parent_id >= 0].node_id.values
    +270        endNodeIDs = sorted(endNodeIDs, key=lambda x: dists.get(x, 0), reverse=True)
    +271
    +272        seen: set = set()
    +273        sequences = []
    +274        for nodeID in endNodeIDs:
    +275            sequence = [nodeID]
    +276            parents = list(G.successors(nodeID))
    +277            while True:
    +278                if not parents:
    +279                    break
    +280                parentID = parents[0]
    +281                sequence.append(parentID)
    +282                if parentID in seen:
    +283                    break
    +284                seen.add(parentID)
    +285                parents = list(G.successors(parentID))
    +286
    +287            if len(sequence) > 1:
    +288                sequences.append(sequence)
    +289
    +290        # Sort sequences by length
    +291        lengths = [dists[s[0]] - dists[s[-1]] for s in sequences]
    +292        sequences = [x for _, x in sorted(zip(lengths, sequences), reverse=True)]
    +293
    +294        if return_lengths:
    +295            return sequences, sorted(lengths, reverse=True)
    +296        else:
    +297            return sequences
     
    @@ -1620,51 +1801,51 @@
    Returns
    -
    238    def save_swc(self, filepath):
    -239        """Save skeleton in SWC format.
    -240
    -241        Parameters
    -242        ----------
    -243        filepath :      path-like
    -244                        Filepath to save SWC to.
    -245
    -246        """
    -247        header = dedent(f"""\
    -248        # SWC format file
    -249        # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html
    -250        # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor)
    -251        # PointNo Label X Y Z Radius Parent
    -252        # Labels:
    -253        # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point
    -254        """)
    -255
    -256        # Make copy of SWC table
    -257        swc = self.swc.copy()
    -258
    -259        # Set all labels to undefined
    -260        swc['label'] = 0
    -261        swc.loc[~swc.node_id.isin(swc.parent_id.values), 'label'] = 6
    -262        n_childs = swc.groupby('parent_id').size()
    -263        bp = n_childs[n_childs > 1].index.values
    -264        swc.loc[swc.node_id.isin(bp), 'label'] = 5
    -265
    -266        # Add radius if missing
    -267        if 'radius' not in swc.columns:
    -268            swc['radius'] = 0
    -269
    -270        # Get things in order
    -271        swc = swc[['node_id', 'label', 'x', 'y', 'z', 'radius', 'parent_id']]
    -272
    -273        # Adjust column titles
    -274        swc.columns = ['PointNo', 'Label', 'X', 'Y', 'Z', 'Radius', 'Parent']
    -275
    -276        with open(filepath, 'w') as file:
    -277            # Write header
    -278            file.write(header)
    -279
    -280            # Write data
    -281            writer = csv.writer(file, delimiter=' ')
    -282            writer.writerows(swc.astype(str).values)
    +            
    299    def save_swc(self, filepath):
    +300        """Save skeleton in SWC format.
    +301
    +302        Parameters
    +303        ----------
    +304        filepath :      path-like
    +305                        Filepath to save SWC to.
    +306
    +307        """
    +308        header = dedent(f"""\
    +309        # SWC format file
    +310        # based on specifications at http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html
    +311        # Created on {datetime.date.today()} using skeletor (https://github.com/navis-org/skeletor)
    +312        # PointNo Label X Y Z Radius Parent
    +313        # Labels:
    +314        # 0 = undefined, 1 = soma, 5 = fork point, 6 = end point
    +315        """)
    +316
    +317        # Make copy of SWC table
    +318        swc = self.swc.copy()
    +319
    +320        # Set all labels to undefined
    +321        swc["label"] = 0
    +322        swc.loc[~swc.node_id.isin(swc.parent_id.values), "label"] = 6
    +323        n_childs = swc.groupby("parent_id").size()
    +324        bp = n_childs[n_childs > 1].index.values
    +325        swc.loc[swc.node_id.isin(bp), "label"] = 5
    +326
    +327        # Add radius if missing
    +328        if "radius" not in swc.columns:
    +329            swc["radius"] = 0
    +330
    +331        # Get things in order
    +332        swc = swc[["node_id", "label", "x", "y", "z", "radius", "parent_id"]]
    +333
    +334        # Adjust column titles
    +335        swc.columns = ["PointNo", "Label", "X", "Y", "Z", "Radius", "Parent"]
    +336
    +337        with open(filepath, "w") as file:
    +338            # Write header
    +339            file.write(header)
    +340
    +341            # Write data
    +342            writer = csv.writer(file, delimiter=" ")
    +343            writer.writerows(swc.astype(str).values)
     
    @@ -1691,28 +1872,28 @@
    Parameters
    -
    284    def scene(self, mesh=False, **kwargs):
    -285        """Return a Scene object containing the skeleton.
    -286
    -287        Returns
    -288        -------
    -289        scene :     trimesh.scene.scene.Scene
    -290                    Contains the skeleton and optionally the mesh.
    -291
    -292        """
    -293        if mesh:
    -294            if isinstance(self.mesh, type(None)):
    -295                raise ValueError('Skeleton has no mesh.')
    -296
    -297            self.mesh.visual.face_colors = [100, 100, 100, 100]
    -298
    -299            # Note the copy(): without it the transform in show() changes
    -300            # the original meshes
    -301            sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs)
    -302        else:
    -303            sc = tm.Scene(self.skeleton.copy(), **kwargs)
    -304
    -305        return sc
    +            
    345    def scene(self, mesh=False, **kwargs):
    +346        """Return a Scene object containing the skeleton.
    +347
    +348        Returns
    +349        -------
    +350        scene :     trimesh.scene.scene.Scene
    +351                    Contains the skeleton and optionally the mesh.
    +352
    +353        """
    +354        if mesh:
    +355            if isinstance(self.mesh, type(None)):
    +356                raise ValueError("Skeleton has no mesh.")
    +357
    +358            self.mesh.visual.face_colors = [100, 100, 100, 100]
    +359
    +360            # Note the copy(): without it the transform in show() changes
    +361            # the original meshes
    +362            sc = tm.Scene([self.mesh.copy(), self.skeleton.copy()], **kwargs)
    +363        else:
    +364            sc = tm.Scene(self.skeleton.copy(), **kwargs)
    +365
    +366        return sc
     
    @@ -1739,30 +1920,30 @@
    Returns
    -
    307    def show(self, mesh=False, **kwargs):
    -308        """Render the skeleton in an opengl window. Requires pyglet.
    -309
    -310        Parameters
    -311        ----------
    -312        mesh :      bool
    -313                    If True, will render transparent mesh on top of the
    -314                    skeleton.
    -315
    -316        Returns
    -317        --------
    -318        scene :     trimesh.scene.Scene
    -319                    Scene with skeleton in it.
    -320
    -321        """
    -322        scene = self.scene(mesh=mesh)
    -323
    -324        # I encountered some issues if object space is big and the easiest
    -325        # way to work around this is to apply a transform such that the
    -326        # coordinates have -5 to +5 bounds
    -327        fac = 5 / np.fabs(self.skeleton.bounds).max()
    -328        scene.apply_transform(np.diag([fac, fac, fac, 1]))
    -329
    -330        return scene.show(**kwargs)
    +            
    368    def show(self, mesh=False, **kwargs):
    +369        """Render the skeleton in an opengl window. Requires pyglet.
    +370
    +371        Parameters
    +372        ----------
    +373        mesh :      bool
    +374                    If True, will render transparent mesh on top of the
    +375                    skeleton.
    +376
    +377        Returns
    +378        --------
    +379        scene :     trimesh.scene.Scene
    +380                    Scene with skeleton in it.
    +381
    +382        """
    +383        scene = self.scene(mesh=mesh)
    +384
    +385        # I encountered some issues if object space is big and the easiest
    +386        # way to work around this is to apply a transform such that the
    +387        # coordinates have -5 to +5 bounds
    +388        fac = 5 / np.fabs(self.skeleton.bounds).max()
    +389        scene.apply_transform(np.diag([fac, fac, fac, 1]))
    +390
    +391        return scene.show(**kwargs)
     
    @@ -1797,108 +1978,112 @@
    Returns
    -
    332    def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf):
    -333        """Mend breaks in the skeleton using the original mesh.
    -334
    -335        This works by comparing the connectivity of the original mesh with that
    -336        of the skeleton. If the shortest path between two adjacent vertices on the mesh
    -337        is shorter than the distance between the nodes in the skeleton, a new edge
    -338        is added to the skeleton.
    -339
    -340        Parameters
    -341        ----------
    -342        dist_mult : float, optional
    -343                    Factor by which the new edge should be shorter than the
    -344                    current shortest path between two nodes to be added.
    -345                    Lower values = fewer false negatives; higher values = fewer
    -346                    false positive edges.
    -347        dist_min :  float, optional
    -348                    Minimum distance between nodes to consider adding an edge.
    -349                    Use this to avoid adding very short edges.
    -350        dist_max :  float, optional
    -351                    Maximum distance between nodes to consider adding an edge.
    -352                    Use this to avoid adding very long edges.
    -353
    -354        Returns
    -355        -------
    -356        edges :     (N, 2) array
    -357                    Edges connecting the skeleton nodes.
    -358        vertices :  (N, 3) array
    -359                    Positions of the skeleton nodes.
    -360
    -361        """
    -362        # We need `.mesh_map` and `.mesh` to exist
    -363        if self.mesh_map is None:
    -364            raise ValueError('Skeleton must have a `mesh_map` to mend breaks.')
    -365        if self.mesh is None:
    -366            raise ValueError('Skeleton must have a `mesh` to mend breaks.')
    -367
    -368        # Make a copy of the mesh edges
    -369        edges = self.mesh.edges.copy()
    -370        # Map mesh vertices to skeleton vertices
    -371        edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]]
    -372        edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]]
    -373        # Deduplicate
    -374        edges = np.unique(edges, axis=0)
    -375        # Remove self edges
    -376        edges = edges[edges[:,0] != edges[:, 1]]
    -377
    -378        G = self.get_graph().to_undirected()
    -379
    -380        # Remove edges that are already in the skeleton
    -381        edges = np.array([e for e in edges if not G.has_edge(*e)])
    -382
    -383        # Calculate distance between these new edge candidates
    -384        dists = np.sqrt(((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1))
    -385
    -386        # Sort by distance (lowest first)
    -387        edges = edges[np.argsort(dists)]
    -388        dists = dists[np.argsort(dists)]
    -389
    -390        for e, d in zip(edges, dists):
    -391            # Check if the new path would be shorter than the current shortest path
    -392            if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]):
    -393                continue
    -394            # Check if the distance is within bounds
    -395            elif d < dist_min:
    -396                continue
    -397            elif d > dist_max:
    -398                continue
    -399            # Add edge
    -400            G.add_edge(*e, weight=d)
    -401
    -402        # The above may have introduced small triangles which we should try to remove
    -403        # by removing the longest edge in a triangle. I have also spotted more
    -404        # complex cases of four or more nodes forming false-positive loops but
    -405        # these will be harder to detect and remove.
    -406
    -407        # First collect neighbors for each node
    -408        later_nbrs = {}
    -409        for node, neighbors in G.adjacency():
    -410            later_nbrs[node] = {n for n in neighbors if n not in later_nbrs and n != node}
    -411
    -412        # Go over each node
    -413        triangles = set()
    -414        for node1, neighbors in later_nbrs.items():
    -415            # Go over each neighbor
    -416            for node2 in neighbors:
    -417                # Check if there is one or more third nodes that are connected to both
    -418                third_nodes = neighbors & later_nbrs[node2]
    -419                for node3 in third_nodes:
    -420                    # Add triangle (sort to deduplicate)
    -421                    triangles.add(tuple(sorted([node1, node2, node3])))
    -422
    -423        # Remove longest edge in each triangle
    -424        for t in triangles:
    -425            e1, e2, e3 = t[:2], t[1:], t[::2]
    -426            # Make sure all edges still exist (we may have already removed edges
    -427            # that were part of a previous triangle)
    -428            if any(not G.has_edge(*e) for e in (e1, e2, e3)):
    -429                continue
    -430            # Remove the longest edge
    -431            G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]['weight']))
    -432
    -433        return np.array(G.edges), self.vertices.copy()
    +            
    393    def mend_breaks(self, dist_mult=5, dist_min=0, dist_max=np.inf):
    +394        """Mend breaks in the skeleton using the original mesh.
    +395
    +396        This works by comparing the connectivity of the original mesh with that
    +397        of the skeleton. If the shortest path between two adjacent vertices on the mesh
    +398        is shorter than the distance between the nodes in the skeleton, a new edge
    +399        is added to the skeleton.
    +400
    +401        Parameters
    +402        ----------
    +403        dist_mult : float, optional
    +404                    Factor by which the new edge should be shorter than the
    +405                    current shortest path between two nodes to be added.
    +406                    Lower values = fewer false negatives; higher values = fewer
    +407                    false positive edges.
    +408        dist_min :  float, optional
    +409                    Minimum distance between nodes to consider adding an edge.
    +410                    Use this to avoid adding very short edges.
    +411        dist_max :  float, optional
    +412                    Maximum distance between nodes to consider adding an edge.
    +413                    Use this to avoid adding very long edges.
    +414
    +415        Returns
    +416        -------
    +417        edges :     (N, 2) array
    +418                    Edges connecting the skeleton nodes.
    +419        vertices :  (N, 3) array
    +420                    Positions of the skeleton nodes.
    +421
    +422        """
    +423        # We need `.mesh_map` and `.mesh` to exist
    +424        if self.mesh_map is None:
    +425            raise ValueError("Skeleton must have a `mesh_map` to mend breaks.")
    +426        if self.mesh is None:
    +427            raise ValueError("Skeleton must have a `mesh` to mend breaks.")
    +428
    +429        # Make a copy of the mesh edges
    +430        edges = self.mesh.edges.copy()
    +431        # Map mesh vertices to skeleton vertices
    +432        edges[:, 0] = self.mesh_map[self.mesh.edges[:, 0]]
    +433        edges[:, 1] = self.mesh_map[self.mesh.edges[:, 1]]
    +434        # Deduplicate
    +435        edges = np.unique(edges, axis=0)
    +436        # Remove self edges
    +437        edges = edges[edges[:, 0] != edges[:, 1]]
    +438
    +439        G = self.get_graph().to_undirected()
    +440
    +441        # Remove edges that are already in the skeleton
    +442        edges = np.array([e for e in edges if not G.has_edge(*e)])
    +443
    +444        # Calculate distance between these new edge candidates
    +445        dists = np.sqrt(
    +446            ((self.vertices[edges[:, 0]] - self.vertices[edges[:, 1]]) ** 2).sum(axis=1)
    +447        )
    +448
    +449        # Sort by distance (lowest first)
    +450        edges = edges[np.argsort(dists)]
    +451        dists = dists[np.argsort(dists)]
    +452
    +453        for e, d in zip(edges, dists):
    +454            # Check if the new path would be shorter than the current shortest path
    +455            if (d * dist_mult) < nx.shortest_path_length(G, e[0], e[1]):
    +456                continue
    +457            # Check if the distance is within bounds
    +458            elif d < dist_min:
    +459                continue
    +460            elif d > dist_max:
    +461                continue
    +462            # Add edge
    +463            G.add_edge(*e, weight=d)
    +464
    +465        # The above may have introduced small triangles which we should try to remove
    +466        # by removing the longest edge in a triangle. I have also spotted more
    +467        # complex cases of four or more nodes forming false-positive loops but
    +468        # these will be harder to detect and remove.
    +469
    +470        # First collect neighbors for each node
    +471        later_nbrs = {}
    +472        for node, neighbors in G.adjacency():
    +473            later_nbrs[node] = {
    +474                n for n in neighbors if n not in later_nbrs and n != node
    +475            }
    +476
    +477        # Go over each node
    +478        triangles = set()
    +479        for node1, neighbors in later_nbrs.items():
    +480            # Go over each neighbor
    +481            for node2 in neighbors:
    +482                # Check if there is one or more third nodes that are connected to both
    +483                third_nodes = neighbors & later_nbrs[node2]
    +484                for node3 in third_nodes:
    +485                    # Add triangle (sort to deduplicate)
    +486                    triangles.add(tuple(sorted([node1, node2, node3])))
    +487
    +488        # Remove longest edge in each triangle
    +489        for t in triangles:
    +490            e1, e2, e3 = t[:2], t[1:], t[::2]
    +491            # Make sure all edges still exist (we may have already removed edges
    +492            # that were part of a previous triangle)
    +493            if any(not G.has_edge(*e) for e in (e1, e2, e3)):
    +494                continue
    +495            # Remove the longest edge
    +496            G.remove_edge(*max((e1, e2, e3), key=lambda e: G.edges[e]["weight"]))
    +497
    +498        return np.array(G.edges), self.vertices.copy()