.. currentmodule:: brian

.. _example-electrophysiology_offline_electrode_compensation:

Example: offline_electrode_compensation (electrophysiology)
===========================================================

Offline compensation example
Input current: 1 second of filtered noise
Raw trace: Rothman Mannis model of the cochlear nucleus

::

    from brian import *
    from brian.experimental.modelfitting import *
    import numpy
    
    if __name__ == '__main__':
    
        # load input current
        input = numpy.load("compensation_I.npy")
        
        # load neuron trace
        neurontrace = numpy.load("compensation_Vm.npy")
        
        # raw trace: add electrode resistance to neuron trace
        rawtrace = neurontrace + 500 * Mohm * input
        
        # time
        t = linspace(0.0, 1.0, 10000)
        
        # compensate the raw trace using 100 particles and 20 iterations
        comp, full, electrode, results = compensate(input,
                                                    rawtrace,
                                                    gpu=1,
                                                    popsize=100,
                                                    maxiter=20)
        
        print "The procedure found an electrode resistance Re=%.1f MOhm" \
            % (results["Re"]/Mohm)
        
        # plot the input current
        subplot(211)
        plot(t, input, 'k')
        xlabel("Time (s)")
        ylabel("Input current (A)")
        
        # plot the neuron trace, the raw trace, and the compensated trace
        subplot(212)
        plot(t, rawtrace, 'k', label="raw")
        plot(t, neurontrace, 'g', label="neuron")
        plot(t, comp, 'r', label="compensated")
        xlabel("Time (s)")
        ylabel("Membrane potential (V)")
        legend()
        
        show()
    

