Exemple #1
0
def simple_iclamp_analysis(volts, 
                           times, 
                           analysis_var=None, 
                           start_analysis = 0,
                           end_analysis = None,
                           plot=False, 
                           show_plot_already = True):
    
    if analysis_var == None:
        analysis_var={'peak_delta':0,
                      'baseline':0,
                      'dvdt_threshold':0,
                      'peak_threshold':0}

    analysed=analysis.IClampAnalysis(volts,
                                     times,
                                     analysis_var,
                                     start_analysis=start_analysis,
                                     end_analysis= end_analysis if end_analysis is not None else times[-1],
                                     smooth_data=False,
                                     show_smoothed_data=False,
                                     max_min_method=analysis.max_min_simple)
                                     

    analysed.analyse()

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))
    maxmin = analysed.max_min_dictionary
    
    if plot:

        fig = pylab.figure()
        fig.canvas.set_window_title("Data analysed (%i traces at %i time points)"%(len(volts),len(times)))

        pylab.xlabel('Time (ms)')
        pylab.ylabel('Voltage (mV)')
        pylab.grid('on')
    
        if analysed.analysis_results:
            if analysed.analysis_results.has_key('average_maximum'):
                _add_horizontal_line(analysed.analysis_results['average_maximum'], times)

            if analysed.analysis_results.has_key('average_minimum'):
                _add_horizontal_line(analysed.analysis_results['average_minimum'], times)

        if maxmin:
            for i in range(len(maxmin['maxima_times'])):
                pylab.plot(maxmin['maxima_times'][i],maxmin['maxima_values'][i],'ro')

            for i in range(len(maxmin['minima_times'])):
                pylab.plot(maxmin['minima_times'][i],maxmin['minima_values'][i],'go')


        pylab.plot(times, volts)

        if show_plot_already:
            pylab.show()
            
    return analysed.analysis_results
Exemple #2
0
def load_csv_data(file_path, plot=False):
    """Extracts time and voltage data from a csv file

    Data must be in a csv and in two columns, first time and second
    voltage. Units should be SI (Volts and Seconds).

    :param file_path: full file path to file e.g /home/mike/test.csv

    :return: two lists - time and voltage

    """
    import csv

    csv_file = file(file_path, "r")
    csv_reader = csv.reader(csv_file)

    v = []
    t = []

    i = 0
    for row in csv_reader:

        try:

            t_value = float(row[0]) * 1000  # convert to ms
            v_value = float(row[1]) * 1000  # convert to mV

            t.append(t_value)
            v.append(v_value)

        except:
            print_comment_v("row ", i, " invalid")

        i += 1

    if plot:
        from matplotlib import pyplot

        pyplot.plot(t, v)
        pyplot.title("Raw data")
        pyplot.xlabel("Time (ms)")
        pyplot.ylabel("Voltage (mV)")
        pyplot.show()

    return np.array(t), np.array(v)
Exemple #3
0
def load_csv_data(file_path,plot=False):
    """Extracts time and voltage data from a csv file
    
    Data must be in a csv and in two columns, first time and second 
    voltage. Units should be SI (Volts and Seconds).

    :param file_path: full file path to file e.g /home/mike/test.csv
        
    :return: two lists - time and voltage

    """
    import csv

    csv_file=file(file_path,'r')
    csv_reader=csv.reader(csv_file)

    v=[]
    t=[]

    i=0
    for row in csv_reader:

        try:

            t_value=float(row[0])*1000 #convert to ms
            v_value=float(row[1])*1000 #convert to mV

            t.append(t_value)
            v.append(v_value)

        except:
            print_comment_v('row ',i,' invalid')

        i+=1

    if plot:
        from matplotlib import pyplot        
        pyplot.plot(t,v)
        pyplot.title('Raw data')
        pyplot.xlabel('Time (ms)')
        pyplot.ylabel('Voltage (mV)')
        pyplot.show()

    return np.array(t), np.array(v)
Exemple #4
0
def simple_iclamp_analysis(
    volts,
    times,
    analysis_var=None,
    start_analysis=0,
    end_analysis=None,
    plot=False,
    show_plot_already=True,
):
    """
    A utility function to quickly carry out a simple current clamp analysis
    (IClampAnalysis).

    :param v: time-dependent variable (usually voltage)
    :type v: iterable
    :param t: time-array (1-to-1 correspondence with v_array)
    :type t: iterable
    :param start_analysis: time in v,t where analysis is to start
    :type start_analysis: float
    :param end_analysis: time in v,t where analysis is to end
    :type end_analysis: float

    :returns: dictionary of analysis results
    """
    if analysis_var is None:
        analysis_var = {
            "peak_delta": 0,
            "baseline": 0,
            "dvdt_threshold": 0,
            "peak_threshold": 0,
        }

    analysed = analysis.IClampAnalysis(
        volts,
        times,
        analysis_var,
        start_analysis=start_analysis,
        end_analysis=end_analysis if end_analysis is not None else times[-1],
        smooth_data=False,
        show_smoothed_data=False,
        max_min_method=analysis.max_min_simple,
    )

    analysed.analyse()

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))
    maxmin = analysed.max_min_dictionary

    if plot:

        fig = pylab.figure()
        pylab.get_current_fig_manager().set_window_title(
            "Data analysed (%i traces at %i time points)" %
            (len(volts), len(times)))

        pylab.xlabel("Time (ms)")
        pylab.ylabel("Voltage (mV)")
        pylab.grid("on")

        if analysed.analysis_results:
            if "average_maximum" in analysed.analysis_results:
                _add_horizontal_line(
                    analysed.analysis_results["average_maximum"], times)

            if "average_minimum" in analysed.analysis_results:
                _add_horizontal_line(
                    analysed.analysis_results["average_minimum"], times)

        if maxmin:
            for i in range(len(maxmin["maxima_times"])):
                pylab.plot(maxmin["maxima_times"][i],
                           maxmin["maxima_values"][i], "ro")

            for i in range(len(maxmin["minima_times"])):
                pylab.plot(maxmin["minima_times"][i],
                           maxmin["minima_values"][i], "go")

        pylab.plot(times, volts)

        if show_plot_already:
            pylab.show()

    return analysed.analysis_results
Exemple #5
0
def simple_network_analysis(
    volts,
    times,
    analysis_var=None,
    start_analysis=0,
    end_analysis=None,
    plot=False,
    show_plot_already=True,
    targets=None,
    extra_targets=None,
    verbose=False,
):
    """
    A utility function to quickly carry out a simple network analysis
    (IClampAnalysis).

    :param v: time-dependent variable (usually voltage)
    :type v: iterable
    :param t: time-vector
    :type t: iterable
    :param analysis_var: dictionary containing parameters to be used
        in analysis such as delta for peak detection
    :type analysis_var: dict
    :param start_analysis: time t where analysis is to start
    :type start_analysis: float
    :param end_analysis: time in t where analysis is to end
    :type end_analysis: float

    :returns: dictionary of analysis results

    """

    if analysis_var is None:
        analysis_var = {
            "peak_delta": 0,
            "baseline": 0,
            "dvdt_threshold": 0,
            "peak_threshold": 0,
        }

    analysed = analysis.NetworkAnalysis(
        volts,
        times,
        analysis_var,
        start_analysis=start_analysis,
        end_analysis=end_analysis if end_analysis is not None else times[-1],
        smooth_data=False,
        show_smoothed_data=False,
        verbose=verbose,
    )

    analysed.analyse(targets=targets, extra_targets=extra_targets)

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))

    if plot:
        fig = pylab.figure()
        fig.canvas.set_window_title(
            "Data analysed (%i traces at %i time points): %s" %
            (len(volts.keys()), len(times), volts.keys()))

        pylab.xlabel("Time (ms)")
        pylab.ylabel("Voltage (mV)")
        pylab.grid("on")

        for vk in volts.keys():
            vs = volts[vk]
            maxmin = analysed.max_min_dictionaries[vk]
            pre = "%s:" % vk

            if analysed.analysis_results:
                if pre + "average_maximum" in analysed.analysis_results:
                    _add_horizontal_line(
                        analysed.analysis_results[pre + "average_maximum"],
                        times)

                if pre + "maximum" in analysed.analysis_results:
                    _add_horizontal_line(
                        analysed.analysis_results[pre + "maximum"], times)

                if pre + "average_minimum" in analysed.analysis_results:
                    _add_horizontal_line(
                        analysed.analysis_results[pre + "average_minimum"],
                        times)

                if pre + "minimum" in analysed.analysis_results:
                    _add_horizontal_line(
                        analysed.analysis_results[pre + "minimum"], times)

            if maxmin:
                for i in range(len(maxmin["maxima_times"])):
                    pylab.plot(maxmin["maxima_times"][i],
                               maxmin["maxima_values"][i], "ro")

                for i in range(len(maxmin["minima_times"])):
                    pylab.plot(maxmin["minima_times"][i],
                               maxmin["minima_values"][i], "go")

            pylab.plot(times, vs)

        if show_plot_already:
            pylab.show()

    return analysed.analysis_results
Exemple #6
0
def simple_network_analysis(volts, 
                           times, 
                           analysis_var=None, 
                           start_analysis = 0,
                           end_analysis = None,
                           plot=False, 
                           show_plot_already = True,
                           targets=None,
                           extra_targets=None,
                           verbose=False):
    
    if analysis_var == None:
        analysis_var={'peak_delta':0,
                      'baseline':0,
                      'dvdt_threshold':0,
                      'peak_threshold':0}
                     

    analysed=analysis.NetworkAnalysis(volts,
                                     times,
                                     analysis_var,
                                     start_analysis=start_analysis,
                                     end_analysis= end_analysis if end_analysis is not None else times[-1],
                                     smooth_data=False,
                                     show_smoothed_data=False,
                                     verbose=verbose)
                                     

    analysed.analyse(targets=targets, extra_targets=extra_targets)

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))
    
    if plot:
        fig = pylab.figure()
        fig.canvas.set_window_title("Data analysed (%i traces at %i time points): %s"%(len(volts.keys()),len(times), volts.keys()))

        pylab.xlabel('Time (ms)')
        pylab.ylabel('Voltage (mV)')
        pylab.grid('on')
            
        for vk in volts.keys():
            vs = volts[vk]
            maxmin = analysed.max_min_dictionaries[vk]
            pre = '%s:'%vk
            

            if analysed.analysis_results:
                if analysed.analysis_results.has_key(pre+'average_maximum'):
                    _add_horizontal_line(analysed.analysis_results[pre+'average_maximum'], times)
                    
                if analysed.analysis_results.has_key(pre+'maximum'):
                    _add_horizontal_line(analysed.analysis_results[pre+'maximum'], times)

                if analysed.analysis_results.has_key(pre+'average_minimum'):
                    _add_horizontal_line(analysed.analysis_results[pre+'average_minimum'], times)
                    
                if analysed.analysis_results.has_key(pre+'minimum'):
                    _add_horizontal_line(analysed.analysis_results[pre+'minimum'], times)

            if maxmin:
                for i in range(len(maxmin['maxima_times'])):
                    pylab.plot(maxmin['maxima_times'][i],maxmin['maxima_values'][i],'ro')

                for i in range(len(maxmin['minima_times'])):
                    pylab.plot(maxmin['minima_times'][i],maxmin['minima_values'][i],'go')


            pylab.plot(times, vs)

        if show_plot_already:
            pylab.show()
            
    return analysed.analysis_results
Exemple #7
0
def simple_network_analysis(volts,
                            times,
                            analysis_var=None,
                            start_analysis=0,
                            end_analysis=None,
                            plot=False,
                            show_plot_already=True,
                            targets=None,
                            extra_targets=None,
                            verbose=False):

    if analysis_var == None:
        analysis_var = {
            'peak_delta': 0,
            'baseline': 0,
            'dvdt_threshold': 0,
            'peak_threshold': 0
        }

    analysed = analysis.NetworkAnalysis(
        volts,
        times,
        analysis_var,
        start_analysis=start_analysis,
        end_analysis=end_analysis if end_analysis is not None else times[-1],
        smooth_data=False,
        show_smoothed_data=False,
        verbose=verbose)

    analysed.analyse(targets=targets, extra_targets=extra_targets)

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))

    if plot:
        fig = pylab.figure()
        fig.canvas.set_window_title(
            "Data analysed (%i traces at %i time points): %s" %
            (len(volts.keys()), len(times), volts.keys()))

        pylab.xlabel('Time (ms)')
        pylab.ylabel('Voltage (mV)')
        pylab.grid('on')

        for vk in volts.keys():
            vs = volts[vk]
            maxmin = analysed.max_min_dictionaries[vk]
            pre = '%s:' % vk

            if analysed.analysis_results:
                if analysed.analysis_results.has_key(pre + 'average_maximum'):
                    _add_horizontal_line(
                        analysed.analysis_results[pre + 'average_maximum'],
                        times)

                if analysed.analysis_results.has_key(pre + 'maximum'):
                    _add_horizontal_line(
                        analysed.analysis_results[pre + 'maximum'], times)

                if analysed.analysis_results.has_key(pre + 'average_minimum'):
                    _add_horizontal_line(
                        analysed.analysis_results[pre + 'average_minimum'],
                        times)

                if analysed.analysis_results.has_key(pre + 'minimum'):
                    _add_horizontal_line(
                        analysed.analysis_results[pre + 'minimum'], times)

            if maxmin:
                for i in range(len(maxmin['maxima_times'])):
                    pylab.plot(maxmin['maxima_times'][i],
                               maxmin['maxima_values'][i], 'ro')

                for i in range(len(maxmin['minima_times'])):
                    pylab.plot(maxmin['minima_times'][i],
                               maxmin['minima_values'][i], 'go')

            pylab.plot(times, vs)

        if show_plot_already:
            pylab.show()

    return analysed.analysis_results
Exemple #8
0
def simple_iclamp_analysis(volts,
                           times,
                           analysis_var=None,
                           start_analysis=0,
                           end_analysis=None,
                           plot=False,
                           show_plot_already=True):

    if analysis_var == None:
        analysis_var = {
            'peak_delta': 0,
            'baseline': 0,
            'dvdt_threshold': 0,
            'peak_threshold': 0
        }

    analysed = analysis.IClampAnalysis(
        volts,
        times,
        analysis_var,
        start_analysis=start_analysis,
        end_analysis=end_analysis if end_analysis is not None else times[-1],
        smooth_data=False,
        show_smoothed_data=False,
        max_min_method=analysis.max_min_simple)

    analysed.analyse()

    analysis.print_comment_v(pp.pformat(analysed.analysis_results))
    maxmin = analysed.max_min_dictionary

    if plot:

        fig = pylab.figure()
        fig.canvas.set_window_title(
            "Data analysed (%i traces at %i time points)" %
            (len(volts), len(times)))

        pylab.xlabel('Time (ms)')
        pylab.ylabel('Voltage (mV)')
        pylab.grid('on')

        if analysed.analysis_results:
            if analysed.analysis_results.has_key('average_maximum'):
                _add_horizontal_line(
                    analysed.analysis_results['average_maximum'], times)

            if analysed.analysis_results.has_key('average_minimum'):
                _add_horizontal_line(
                    analysed.analysis_results['average_minimum'], times)

        if maxmin:
            for i in range(len(maxmin['maxima_times'])):
                pylab.plot(maxmin['maxima_times'][i],
                           maxmin['maxima_values'][i], 'ro')

            for i in range(len(maxmin['minima_times'])):
                pylab.plot(maxmin['minima_times'][i],
                           maxmin['minima_values'][i], 'go')

        pylab.plot(times, volts)

        if show_plot_already:
            pylab.show()

    return analysed.analysis_results