def plot_iv_curve(self, ax=None): # pylint: disable=E1103 title = '%s: IV Curve' % (self.cell_description or None) if not ax: f = QuantitiesFigure() f.suptitle(title) ax = f.add_subplot(1, 1, 1) ax.set_xlabel('Injected Current') ax.set_ylabel('SteadyStateVoltage') V_in_mV = [ self.get_iv_point_steaddy_state(c).rescale('mV').magnitude for c in self.currents ] v = np.array(V_in_mV) * pq.mV i = factorise_units_from_list(self.currents) low_v = V_in_mV < self.v_regressor_limit if self.v_regressor_limit else range( len(V_in_mV)) print 'i[low_v]', i[low_v] print 'v[low_v]', v[low_v] ax.plot( i[low_v], v[low_v], ) ax.plot( i[np.logical_not(low_v)], v[np.logical_not(low_v)], ) ax.plot( i[np.logical_not(low_v)], v[np.logical_not(low_v)], ) # Plot the regressor: i_units = unit('1:pA').units v_units = unit('1:mV').units iv = np.vstack( (i.rescale(i_units).magnitude, v.rescale(v_units).magnitude)).T if not len(iv[low_v, 0]): return (a_s, b_s, r, tt, stderr) = stats.linregress(iv[low_v, 0], iv[low_v, 1]) input_resistance = (a_s * (v_units / i_units)).rescale('MOhm') reversal_potential = b_s * v_units self.input_resistance = input_resistance self.reversal_potential = reversal_potential ax.plot( i, i * input_resistance + reversal_potential, label="Fit: [V(mV) = %2.3f * I(pA) + %2.3f]" % (a_s, b_s) + " \n[Input Resistance: %2.2fMOhm Reversal Potential: %2.2f mV" % (input_resistance, reversal_potential)) ax.legend() PM.save_figure(figname=title)
def plot_iv_curve(self, ax=None): # pylint: disable=E1103 title = '%s: IV Curve' % (self.cell_description or None) if not ax: f = QuantitiesFigure() f.suptitle(title) ax = f.add_subplot(1, 1, 1) ax.set_xlabel('Injected Current') ax.set_ylabel('SteadyStateVoltage') V_in_mV = [self.get_iv_point_steaddy_state(c).rescale('mV').magnitude for c in self.currents] v = np.array(V_in_mV) * units.mV i = morphforge.units.factorise_units_from_list(self.currents) low_v = V_in_mV < self.v_regressor_limit if self.v_regressor_limit else range( len(V_in_mV)) print 'i[low_v]', i[low_v] print 'v[low_v]', v[low_v] ax.plot(i[low_v], v[low_v], ) ax.plot(i[np.logical_not(low_v)], v[np.logical_not(low_v)], ) ax.plot(i[np.logical_not(low_v)], v[np.logical_not(low_v)], ) # Plot the regressor: i_units = qty('1:pA').units v_units = qty('1:mV').units iv = np.vstack((i.rescale(i_units).magnitude, v.rescale(v_units).magnitude)).T if not len(iv[low_v, 0]): return import scipy.stats as stats (a_s, b_s, r, tt, stderr) = stats.linregress(iv[low_v, 0], iv[low_v, 1]) input_resistance = (a_s * (v_units / i_units)).rescale('MOhm') reversal_potential = b_s * v_units self.input_resistance = input_resistance self.reversal_potential = reversal_potential ax.plot(i, i*input_resistance + reversal_potential,'o-', label = "Fit: [V(mV) = %2.3f * I(pA) + %2.3f]"%(a_s, b_s) + " \n[Input Resistance: %2.2fMOhm Reversal Potential: %2.2f mV"%(input_resistance, reversal_potential) ) ax.legend() PM.save_figure(figname=title)
def plot_traces(self, ax=None): title = '%s: (Voltage Responses to Current Injections)' \ % self.cell_description if not ax: f = QuantitiesFigure() f.suptitle(title) ax = f.add_subplot(1, 1, 1) ax.set_xlabel('Time') ax.set_ylabel('Voltage') # Plot the traces for i_inj in self.currents: ax.plotTrace(self.get_trace(i_inj), label='i_inj: %s' % i_inj) # Add the regions: ax.axvspan(self.tSteaddyStateStart, self.tSteaddyStateStop, facecolor='g', alpha=0.25) ax.legend() from mreorg.scriptplots import PM PM.save_figure(figname=title)