ndio/ramon/__init__.py
def to_hdf5(ramon, hdf5=None):
    """
    Exports a RAMON object to an HDF5 file object.

    Arguments:
        ramon (RAMON): A subclass of RAMONBase
        hdf5 (str): Export filename

    Returns:
        hdf5.File

    Raises:
        InvalidRAMONError: if you pass a non-RAMON object
    """
    if issubclass(type(ramon), RAMONBase) is False:
        raise InvalidRAMONError("Invalid RAMON supplied to ramon.to_hdf5.")

    import h5py
    import numpy

    if hdf5 is None:
        tmpfile = tempfile.NamedTemporaryFile(delete=False)
    else:
        tmpfile = hdf5

    with h5py.File(tmpfile.name, "a") as hdf5:

        # First we'll export things that all RAMON objects have in
        # common, starting with the Group that encompasses each ID:
        grp = hdf5.create_group(str(ramon.id))

        grp.create_dataset("ANNOTATION_TYPE", (1,),
                           numpy.uint32,
                           data=AnnotationType.get_int(type(ramon)))

        if hasattr(ramon, 'cutout'):
            if ramon.cutout is not None:
                grp.create_dataset('CUTOUT', ramon.cutout.shape,
                                   ramon.cutout.dtype, data=ramon.cutout)
                grp.create_dataset('RESOLUTION', (1,),
                                   numpy.uint32, data=ramon.resolution)
                grp.create_dataset('XYZOFFSET', (3,),
                                   numpy.uint32, data=ramon.xyz_offset)

        # Next, add general metadata.
        metadata = grp.create_group('METADATA')

        metadata.create_dataset('AUTHOR', (1,),
                                dtype=h5py.special_dtype(vlen=str),
                                data=ramon.author)

        fstring = StringIO()
        csvw = csv.writer(fstring, delimiter=',')
        csvw.writerows([r for r in six.iteritems(ramon.kvpairs)])

        metadata.create_dataset('KVPAIRS', (1,),
                                dtype=h5py.special_dtype(vlen=str),
                                data=fstring.getvalue())
        metadata.create_dataset('CONFIDENCE', (1,), numpy.float,
                                data=ramon.confidence)
        metadata.create_dataset('STATUS', (1,), numpy.uint32,
                                data=ramon.status)

        # Finally, add type-specific metadata:

        if hasattr(ramon, 'segments'):
            metadata.create_dataset('SEGMENTS',
                                    data=numpy.asarray(ramon.segments,
                                                       dtype=numpy.uint32))

        if hasattr(ramon, 'synapse_type'):
            metadata.create_dataset('SYNAPSE_TYPE', (1,), numpy.uint32,
                                    data=ramon.synapse_type)

        if hasattr(ramon, 'weight'):
            metadata.create_dataset('WEIGHT', (1,),
                                    numpy.float, data=ramon.weight)

        if hasattr(ramon, 'neuron'):
            metadata.create_dataset('NEURON', (1,),
                                    numpy.uint32, data=ramon.neuron)

        if hasattr(ramon, 'segmentclass'):
            metadata.create_dataset('SEGMENTCLASS', (1,), numpy.uint32,
                                    data=ramon.segmentclass)

        if hasattr(ramon, 'synapses'):
            metadata.create_dataset('SYNAPSES', (len(ramon.synapses),),
                                    numpy.uint32, data=ramon.synapses)

        if hasattr(ramon, 'organelles'):
            metadata.create_dataset('ORGANELLES',
                                    (len(ramon.organelles),),
                                    numpy.uint32,
                                    data=ramon.organelles)

        if hasattr(ramon, 'organelle_class'):
            metadata.create_dataset('ORGANELLECLASS', (1,),
                                    numpy.uint32,
                                    data=ramon.organelle_class)
        hdf5.flush()
        tmpfile.seek(0)
        return tmpfile
    return False
def to_hdf5(ramon, hdf5=None):
    """
    Exports a RAMON object to an HDF5 file object.

    Arguments:
        ramon (RAMON): A subclass of RAMONBase
        hdf5 (str): Export filename

    Returns:
        hdf5.File

    Raises:
        InvalidRAMONError: if you pass a non-RAMON object
    """
    if issubclass(type(ramon), RAMONBase) is False:
        raise InvalidRAMONError("Invalid RAMON supplied to ramon.to_hdf5.")

    import h5py
    import numpy

    if hdf5 is None:
        tmpfile = tempfile.NamedTemporaryFile(delete=False)
    else:
        tmpfile = hdf5

    with h5py.File(tmpfile.name, "a") as hdf5:

        # First we'll export things that all RAMON objects have in
        # common, starting with the Group that encompasses each ID:
        grp = hdf5.create_group(str(ramon.id))

        grp.create_dataset("ANNOTATION_TYPE", (1,),
                           numpy.uint32,
                           data=AnnotationType.get_int(type(ramon)))

        if hasattr(ramon, 'cutout'):
            if ramon.cutout is not None:
                grp.create_dataset('CUTOUT', ramon.cutout.shape,
                                   ramon.cutout.dtype, data=ramon.cutout)
                grp.create_dataset('RESOLUTION', (1,),
                                   numpy.uint32, data=ramon.resolution)
                grp.create_dataset('XYZOFFSET', (3,),
                                   numpy.uint32, data=ramon.xyz_offset)

        # Next, add general metadata.
        metadata = grp.create_group('METADATA')

        metadata.create_dataset('AUTHOR', (1,),
                                dtype=h5py.special_dtype(vlen=str),
                                data=ramon.author)

        fstring = StringIO()
        csvw = csv.writer(fstring, delimiter=',')
        csvw.writerows([r for r in six.iteritems(ramon.kvpairs)])

        metadata.create_dataset('KVPAIRS', (1,),
                                dtype=h5py.special_dtype(vlen=str),
                                data=fstring.getvalue())
        metadata.create_dataset('CONFIDENCE', (1,), numpy.float,
                                data=ramon.confidence)
        metadata.create_dataset('STATUS', (1,), numpy.uint32,
                                data=ramon.status)

        # Finally, add type-specific metadata:

        if hasattr(ramon, 'segments'):
            metadata.create_dataset('SEGMENTS',
                                    data=numpy.asarray(ramon.segments,
                                                       dtype=numpy.uint32))

        if hasattr(ramon, 'synapse_type'):
            metadata.create_dataset('SYNAPSE_TYPE', (1,), numpy.uint32,
                                    data=ramon.synapse_type)

        if hasattr(ramon, 'weight'):
            metadata.create_dataset('WEIGHT', (1,),
                                    numpy.float, data=ramon.weight)

        if hasattr(ramon, 'neuron'):
            metadata.create_dataset('NEURON', (1,),
                                    numpy.uint32, data=ramon.neuron)

        if hasattr(ramon, 'segmentclass'):
            metadata.create_dataset('SEGMENTCLASS', (1,), numpy.uint32,
                                    data=ramon.segmentclass)

        if hasattr(ramon, 'synapses'):
            metadata.create_dataset('SYNAPSES', (len(ramon.synapses),),
                                    numpy.uint32, data=ramon.synapses)

        if hasattr(ramon, 'organelles'):
            metadata.create_dataset('ORGANELLES',
                                    (len(ramon.organelles),),
                                    numpy.uint32,
                                    data=ramon.organelles)

        if hasattr(ramon, 'organelle_class'):
            metadata.create_dataset('ORGANELLECLASS', (1,),
                                    numpy.uint32,
                                    data=ramon.organelle_class)
        hdf5.flush()
        tmpfile.seek(0)
        return tmpfile
    return False
def to_hdf5 ( ramon , hdf5 = None ) : if issubclass ( type ( ramon ) , RAMONBase ) is False : raise InvalidRAMONError ( "Invalid RAMON supplied to ramon.to_hdf5." ) import h5py import numpy if hdf5 is None : tmpfile = tempfile . NamedTemporaryFile ( delete = False ) else : tmpfile = hdf5 with h5py . File ( tmpfile . name , "a" ) as hdf5 : # First we'll export things that all RAMON objects have in # common, starting with the Group that encompasses each ID: grp = hdf5 . create_group ( str ( ramon . id ) ) grp . create_dataset ( "ANNOTATION_TYPE" , ( 1 , ) , numpy . uint32 , data = AnnotationType . get_int ( type ( ramon ) ) ) if hasattr ( ramon , 'cutout' ) : if ramon . cutout is not None : grp . create_dataset ( 'CUTOUT' , ramon . cutout . shape , ramon . cutout . dtype , data = ramon . cutout ) grp . create_dataset ( 'RESOLUTION' , ( 1 , ) , numpy . uint32 , data = ramon . resolution ) grp . create_dataset ( 'XYZOFFSET' , ( 3 , ) , numpy . uint32 , data = ramon . xyz_offset ) # Next, add general metadata. metadata = grp . create_group ( 'METADATA' ) metadata . create_dataset ( 'AUTHOR' , ( 1 , ) , dtype = h5py . special_dtype ( vlen = str ) , data = ramon . author ) fstring = StringIO ( ) csvw = csv . writer ( fstring , delimiter = ',' ) csvw . writerows ( [ r for r in six . iteritems ( ramon . kvpairs ) ] ) metadata . create_dataset ( 'KVPAIRS' , ( 1 , ) , dtype = h5py . special_dtype ( vlen = str ) , data = fstring . getvalue ( ) ) metadata . create_dataset ( 'CONFIDENCE' , ( 1 , ) , numpy . float , data = ramon . confidence ) metadata . create_dataset ( 'STATUS' , ( 1 , ) , numpy . uint32 , data = ramon . status ) # Finally, add type-specific metadata: if hasattr ( ramon , 'segments' ) : metadata . create_dataset ( 'SEGMENTS' , data = numpy . asarray ( ramon . segments , dtype = numpy . uint32 ) ) if hasattr ( ramon , 'synapse_type' ) : metadata . create_dataset ( 'SYNAPSE_TYPE' , ( 1 , ) , numpy . uint32 , data = ramon . synapse_type ) if hasattr ( ramon , 'weight' ) : metadata . create_dataset ( 'WEIGHT' , ( 1 , ) , numpy . float , data = ramon . weight ) if hasattr ( ramon , 'neuron' ) : metadata . create_dataset ( 'NEURON' , ( 1 , ) , numpy . uint32 , data = ramon . neuron ) if hasattr ( ramon , 'segmentclass' ) : metadata . create_dataset ( 'SEGMENTCLASS' , ( 1 , ) , numpy . uint32 , data = ramon . segmentclass ) if hasattr ( ramon , 'synapses' ) : metadata . create_dataset ( 'SYNAPSES' , ( len ( ramon . synapses ) , ) , numpy . uint32 , data = ramon . synapses ) if hasattr ( ramon , 'organelles' ) : metadata . create_dataset ( 'ORGANELLES' , ( len ( ramon . organelles ) , ) , numpy . uint32 , data = ramon . organelles ) if hasattr ( ramon , 'organelle_class' ) : metadata . create_dataset ( 'ORGANELLECLASS' , ( 1 , ) , numpy . uint32 , data = ramon . organelle_class ) hdf5 . flush ( ) tmpfile . seek ( 0 ) return tmpfile return False
Exports a RAMON object to an HDF5 file object.

    Arguments:
        ramon (RAMON): A subclass of RAMONBase
        hdf5 (str): Export filename

    Returns:
        hdf5.File

    Raises:
        InvalidRAMONError: if you pass a non-RAMON object
Exports a RAMON object to an HDF5 file object .