idMap = SectionIndexerWithOffsetDF(morph=morph, offset=offset)() idMap[ morph.getDummySection() ] = dummyOffset if regionname_to_int_map is None: regionname_to_int_map = AutoRegionToIntMapTable() region_type_map = dict( (s,0) if not s.region else (s,regionname_to_int_map.regionNameToInt(s.region.name)) for s in morph ) context = [{ 'morph':morph, 'ids':idMap, 'region_type_map':region_type_map }] newOP = Template(swc_templ, context ).respond() output += newOP offset += len( idMap ) return output MorphologyExporter.register("toSWCFile", lambda filename,morphology: SWCTreeWriter.toFile(filename=filename, morph=morphology), allow_override=False, from_type=MorphologyTree ) MorphologyExporter.register("toSWCStr", lambda morphology: SWCTreeWriter.toStr(morph=morphology), allow_override=False, from_type=MorphologyTree )
# Root Vertex: data = [vertex_to_data(morphology._dummy_vertex_index, None, 0)] # Add Each Vertex for (conn_index, (v_index, v_index_parent)) in enumerate(morphology._connectivity): rgn = morphology._section_types[conn_index] data.append(vertex_to_data(v_index, v_index_parent, rgn)) # Save the file: if op: np.savetxt(op, np.array(data), fmt=fmt) else: op = StringIO() np.savetxt(op, np.array(data), fmt=fmt) return op.getvalue() # Wrapper function to avoid binding error: def _export_single_swc(morphology, **kwargs): return ExportArray_SWC._export_single_swc(morphology=morphology, **kwargs) MorphologyExporter.register('toSWC', _export_single_swc, allow_override=False, from_type=MorphologyArray)
@classmethod def export_single(cls, morphology, swc_vertex_offset = 1, op=None, fmt='%d %d %0.2f %0.2f %0.2f %0.2f %d'): def vertexToData(v_index, v_index_parent, rgn): x,y,z,r = morphology._vertices[v_index,:] return [ v_index+swc_vertex_offset, rgn, x, y, z, r, v_index_parent+swc_vertex_offset if v_index_parent is not None else -1 ] #Root Vertex: data = [ vertexToData(morphology._dummy_vertex_index, None, 0) ] # Add Each Vertex for conn_index,(v_index, v_index_parent) in enumerate(morphology._connectivity): rgn = morphology._section_types[conn_index] data.append( vertexToData(v_index, v_index_parent, rgn) ) # Save the file: if op: np.savetxt(op, np.array(data), fmt=fmt ) else: op = StringIO() np.savetxt(op, np.array(data), fmt=fmt ) return op.getvalue() #Wrapper function to avoid binding error: def export_single( morphology, **kwargs): return ExportArray_SWC.export_single(morphology=morphology, **kwargs) MorphologyExporter.register("toSWC",export_single, allow_override=False, from_type=MorphologyArray )
id_map[morph.get_dummy_section()] = dummy_offset if regionname_to_int_map is None: regionname_to_int_map = AutoRegionToIntMapTable() region_type_map = dict((s, 0) if not s.region else ( s, regionname_to_int_map.region_name_to_int(s.region.name)) for s in morph) context = [{ 'morph': morph, 'ids': id_map, 'region_type_map': region_type_map }] new_op = Template(swc_templ, context).respond() output += new_op offset += len(id_map) return output MorphologyExporter.register("toSWCFile", lambda filename, morphology: SWCTreeWriter.to_file( filename=filename, morph=morphology), allow_override=False, from_type=MorphologyTree) MorphologyExporter.register( "toSWCStr", lambda morphology: SWCTreeWriter.to_str(morph=morphology), allow_override=False, from_type=MorphologyTree)
def vertex_to_data(v_index, v_index_parent, rgn): (x, y, z, r) = morphology._vertices[v_index, :] return [v_index + swc_vertex_offset, rgn, x, y, z, r, v_index_parent + swc_vertex_offset if v_index_parent is not None else -1] # Root Vertex: data = [vertex_to_data(morphology._dummy_vertex_index, None, 0)] # Add Each Vertex for (conn_index, (v_index, v_index_parent)) in enumerate(morphology._connectivity): rgn = morphology._section_types[conn_index] data.append(vertex_to_data(v_index, v_index_parent, rgn)) # Save the file: if op: np.savetxt(op, np.array(data), fmt=fmt) else: op = StringIO() np.savetxt(op, np.array(data), fmt=fmt) return op.getvalue() # Wrapper function to avoid binding error: def _export_single_swc(morphology, **kwargs): return ExportArray_SWC._export_single_swc(morphology=morphology, **kwargs) MorphologyExporter.register('toSWC', _export_single_swc, allow_override=False, from_type=MorphologyArray)