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 )
from morphforge.morphology.ui.mayavirenderer import MayaViRenderer from morphforge.morphology.ui.matplotlibviewer import MatPlotLibViewer from morphforge.morphology.importer.morphologyimporter import MorphologyImporter from morphforge.morphology.exporter.morphologyexporter import MorphologyExporter from morphforge.morphology.comparison.comparearrays import MorphArrayComparison from morphforge.morphology.builders.morphologyloader import MorphologyLoader m = MorphologyImporter.fromSWCFile(filename="/home/michael/workspace/morphforge/src/test_data/swc_srcs/28o_spindle20aFI.CNG.swc", astype=MorphologyTree) MorphologyExporter.toSWCFile(morphology = m, filename="/home/michael/Desktop/test1.swc") m2 = MorphologyImporter.fromSWCFile(filename="/home/michael/Desktop/test1.swc", astype=MorphologyTree) #m2 = MorphologyLoader.fromSWC(src=open("/home/michael/workspace/morphforge/src/test_data/swc_srcs/28o_spindle20aFI.CNG.swc")) are_same = MorphArrayComparison.are_same(m, m2) print are_same
# 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)
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)
from morphforge.morphology.core.morphologyarray import MorphologyArray from morphforge.morphology.core.morphologytree import MorphologyTree from morphforge.morphology.ui.mayavirenderer import MayaViRenderer from morphforge.morphology.ui.matplotlibviewer import MatPlotLibViewer from morphforge.morphology.importer.morphologyimporter import MorphologyImporter from morphforge.morphology.exporter.morphologyexporter import MorphologyExporter from morphforge.morphology.comparison.comparearrays import MorphArrayComparison from morphforge.morphology.builders.morphologyloader import MorphologyLoader m = MorphologyImporter.fromSWCFile( filename= "/home/michael/workspace/morphforge/src/test_data/swc_srcs/28o_spindle20aFI.CNG.swc", astype=MorphologyTree) MorphologyExporter.toSWCFile(morphology=m, filename="/home/michael/Desktop/test1.swc") m2 = MorphologyImporter.fromSWCFile(filename="/home/michael/Desktop/test1.swc", astype=MorphologyTree) #m2 = MorphologyLoader.fromSWC(src=open("/home/michael/workspace/morphforge/src/test_data/swc_srcs/28o_spindle20aFI.CNG.swc")) are_same = MorphArrayComparison.are_same(m, m2) print are_same #m = MorphologyLoader2.loadSWCFile(filename="/home/michael/workspace/morphforge/src/test_data/swc_srcs/05b_pyramidal9aACC.CNG_short.swc", astype=MorphologyTree) #MayaViRenderer(morph=m).showSimpleCylinders().show() #MorphologyLoader2.loadSWCFile(astype=MorphologyArray) MatPlotLibViewer(m)
@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 )
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)