def setup_class(cls):

        TestBase.setup_class()

        ctx = cls.local_stack.getAuthenticatedDataStoreCoordinator().getContext()

        proj = ctx.insertProject('ABF import', 'ABF import', DateTime())

        exp = proj.insertExperiment('ABF experiment', DateTime())
        cls.device_info = {u'amplifier.mode': u'I-clamp',
                       u'amplifier.channels.0.gain': 2.5,
                       u'amplifier.channels.1.gain': 3.5}

        # TODO when we move to beta3
        #exp.setEquipmentSetupFromMap(to_map(cls.device_info))

        cls.src = ctx.insertSource("recording source", "source-id")

        abf_file = 'fixtures/example1.abf'

        logging.info("Importing file...")
        cls.epoch_group = import_file(abf_file,
                                      exp,
                                      "amplifier",
                                      [cls.src])[0] #single block

        reader = AxonIO(filename=abf_file)
        cls.block = reader.read()[0] # single block
Esempio n. 2
0
def read_neo(path):

    # Read abf file with neo
    reader = AxonIO(filename=path)
    block = reader.read()

    # Extract analog signals
    if len(block[0].segments[0].analogsignals) == 1:
        channel1 = np.empty(block[0].segments[0].analogsignals[0].T.shape)
        channel1_units = block[0].segments[0].analogsignals[0].units
        channel2 = None
        channel2_units = None
        t = block[0].segments[0].analogsignals[0].times.magnitude
        for idx, seg in enumerate(block[0].segments):
            channel1[idx] = seg.analogsignals[0].T
    #
    #     return {'file_name': block.file_origin,
    #             'recording_date': block.rec_datetime,
    #             'time': t,
    #             'channel1': channel1,

    elif len(block[0].segments[0].analogsignals) == 2:

        channel1 = np.empty((len(block[0].segments), block[0].segments[0].analogsignals[0].size))
        channel1_units = block[0].segments[0].analogsignals[0].units
        channel1_sampling = block[0].segments[0].analogsignals[0].sampling_rate
        channel2 = np.empty((len(block[0].segments), block[0].segments[0].analogsignals[1].size))
        channel2_units = block[0].segments[0].analogsignals[1].units
        channel2_sampling = block[0].segments[0].analogsignals[1].sampling_rate
        t = block[0].segments[0].analogsignals[0].times.magnitude
        for idx, seg in enumerate(block[0].segments):
            channel1[idx] = seg.analogsignals[0].T
            channel2[idx] = seg.analogsignals[1].T
            #channel1[idx] = seg.analogsignals[0]
            #channel2[idx] = seg.analogsignals[1]
        channel_1 = AnalogData(
            signal=channel1,
            time=t,
            units=channel1_units,
            sampling_rate=channel1_sampling
            )
        channel_2 = AnalogData(
            signal=channel2,
            time=t,
            units=channel2_units,
            sampling_rate=channel2_sampling)

    else:
        raise Exception('File {0} either has too many channels, or no channels.'.format(path))

    return AbfFile(
        [channel_1, channel_2],
        file_name=block[0].file_origin,
        date=block[0].rec_datetime)
Esempio n. 3
0
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox, row
from bokeh.models import CustomJS, ColumnDataSource, Span
from bokeh.models.widgets import Button, RadioButtonGroup, Select, Slider, RangeSlider
from bokeh.plotting import figure
from bokeh.layouts import layout
import numpy as np
from neo.io import AxonIO

# Set output
output_file("dashboard.html")

# Read data
reader = AxonIO('/home/matt/Downloads/2017_02_23_0110.abf')
block = reader.read()
ch1_data = []
ch2_data = []
for idx, seg in enumerate(block[0].segments):
    ch1_data.append(seg.analogsignals[0])
    ch2_data.append(seg.analogsignals[1])

ch1_data = np.array(ch1_data).reshape(10,100000)
ch2_data = np.array(ch2_data).reshape(10,100000)

# Plot data
source = ColumnDataSource(data=dict(
                                x=np.arange(0, len(ch2_data[0])),
                                y=ch2_data[0],
                                main=ch2_data[0]
                                )
                        )