strdef loadProg proc ReadIC() {local COUNT, i, File_NumVSteps, TStepCount,File_measTime, VStepCount // $s1 = ExperimentName // $s2 = LeakName (more general) sprint(loadProg,"ClampCurrents/%s.iCl",$s1) print " Loading ClampCurrents from " , loadProg // debug ropen(loadProg) File_NumVSteps=fscan() print "NumVSteps: ", File_NumVSteps for TStepCount=0,NumTSteps File_measTime=fscan() for VStepCount=0,NumVSteps-1 { File_vclmp = fscan() if (DebugOn) print "reading voltage: ",File_vclmp,"(VStepCount:",VStepCount,")" if (File_vclmp!=vclmp[VStepCount]) { print "VClmp - Mismatch (.iCl) " print "VStepCount:", VStepCount, "File_vclmp: ",File_vclmp,"vclmp[VStepCount]:", vclmp[VStepCount] } for TStepCount=0,NumTSteps { iclmp[VStepCount][TStepCount]=fscan() } } ropen() } objref r r = new Random(0) proc AddNoise() {local VStepCount, TStepCount for VStepCount=0,NumVSteps-1 { for TStepCount=0,NumTSteps { noise=r.normal (0,amplNoise^2) / 1000 // in nA as amplNoise in pA iclmp[VStepCount][TStepCount]+=noise } } } proc WriteClampCurrents() { local TStepCount, VStepCount sprint(iClampFileName,"ClampCurrentsNoise/%s.iCl",ExperimentName) print " Writing ClampCurrents to ", iClampFileName //debug wopen(iClampFileName) //m WriteOpen /ClampCurrents/ExperimentName.iCl fprint(" ExperimentName: _%s_",ExperimentName) fprint(" Number of recorded voltage steps:\t\t\t\t%g\n",NumVSteps) fprint(" vclmp \t iclmp(time) \n \t") for TStepCount=0,NumTSteps fprint("%g\t",MeasTimes[TStepCount]) fprint("\n") for VStepCount=0,NumVSteps-1 { // writes: V I(V,t1) I(V,t2) ... fprint("%g\t",vclmp[VStepCount]) for TStepCount=0,NumTSteps { fprint("%g\t",iclmp[VStepCount][TStepCount]) } fprint("\n") } //m next v wopen() sprint(iClampFileName,"ClampCurrentsNoise/%s.gCl",ExperimentName) print " Writing Conductance estimate from ClampCurrents to ", iClampFileName //debug wopen(iClampFileName) //m WriteOpen /ClampCurrents/ExperimentName.iCl fprint("\t") for VStepCount=0,NumVSteps-1 { fprint("%g\t",vclmp[VStepCount]) } fprint("\n") for TStepCount=0,NumTSteps { fprint("%g\t",MeasTimes[TStepCount]) for VStepCount=0,NumVSteps-1 { if (vclmp[VStepCount]==Ek) fprint("0/t") else { fprint("%g\t",iclmp[VStepCount][TStepCount]/(vclmp[VStepCount]-Ek)) } } fprint("\n") } wopen() sprint(iClampFileName,"ClampCurrentsNoise/%s.Show.iCl",ExperimentName) print " Writing Conductance estimate from ClampCurrents to ", iClampFileName //debug wopen(iClampFileName) //m WriteOpen /ClampCurrents/ExperimentName.iCl fprint("\t") for VStepCount=0,NumVSteps-1 { fprint("%g\t",vclmp[VStepCount]) } fprint("\n") for TStepCount=0,NumTSteps { fprint("%g\t",MeasTimes[TStepCount]) for VStepCount=0,NumVSteps-1 { fprint("%g\t",iclmp[VStepCount][TStepCount]) } fprint("\n") } wopen() } ReadIC(ExperimentName) AddNoise() WriteClampCurrents()