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)
Beispiel #4
0
            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)
Beispiel #5
0
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)