//genesis


/***************************		MS Model, Version 9.1	*********************
**************************** 	      graphics3.g 	*********************
	Avrama Blackwell 	kblackw1@gmu.edu
	Wonryull Koh		wkoh1@gmu.edu
	Rebekah Evans 		rcolema2@gmu.edu
	Sriram 				dsriraman@gmail.com	
******************************************************************************

*****************************************************************************/
/*
    create xform /PGform [200,100,600,700] -title "Pulse Generator"

    create xgraph /PGform/graph1 [10,260,580,200] -title  \
    "triggered mode (with delay)"
    setfield ^ ymin -0.1 ymax 1.2
    setfield ^ xmin 0 xmax 10 	

    addmsg {injectName}/bursttrigger /PGform/graph1 PLOT output *bursttrig *black
    addmsg {injectName}/traintrigger /PGform/graph1 PLOT output *traintrig *red 
    addmsg {injectName} /PGform/graph1 PLOTSCALE output *pulse *blue 0.5e9 0.1
    addmsg {precell}/spikegen /PGform/graph1 PLOT state *presyn *green 
     	
    xshow PGform
 
*/ 


/*********************** Begin Local Subroutines *****************************/
/*****************************************************************************/

	//************************ Begin function record_channel *******************
	function record_channel(compt,channel,xcell, color)
 		str compt,xcell,channel, color		
 		str path, graphic_path
                       
		path = {neuronname}@"/"@{compt}@"/"@{channel}
		if ({channel}=="Ca_difshell_1"||{channel}=="Ca_difshell_2"||	\
															{channel}=="Ca_difshell_3")
			if( {isa difshell {path}})
				addmsg {neuronname}/{compt}/{channel} 							\
										{xcell}/Ca PLOT C  *	{channel}  *{color}
			elif( {isa Ca_concen {path}})
				addmsg {neuronname}/{compt}/{channel} 							\
										{xcell}/Ca PLOT Ca *{compt}  *{color}
			end
		else 
			addmsg {neuronname}/{compt}/{channel} {xcell}/channels 			\
										PLOT Ik *{channel} *{color}
		end 
	end
	//************************ End function record_channel *********************
	//**************************************************************************

	//************************ Begin function record_channel *******************
	function record_voltage (compt, xcell,color)
 		str compt, xcell, color
 	
 		str path, spacer, graphic_path
 	
		spacer = "        "
		graphic_path = {compt}@{spacer}
    	addmsg {neuronname}/{compt} {xcell}/v PLOT Vm *{graphic_path} *{color}
	end
	//************************ End function record_channel *********************
	//**************************************************************************
	
	//************************ Begin function step_tmax ************************
/*
	function step_tmax
   	reset
   	setfield /cell/soma inject 0
   	step 5000
   	setfield /cell/soma inject {getfield /control/Injection value}
   	step 20000
   	setfield /cell/soma inject 0.0
	end
*/

	function step_tmax
   	reset
   	setfield /cell/soma inject 0
   	step 5000
   	setfield /cell/soma inject {getfield /control/Injection value}
   	step 1.0 -time
   	setfield /cell/soma inject 0.0
        step 5000
	end
	//************************ End function step_tmax **************************
	//**************************************************************************
	
	//************************ Begin function set_inject ***********************
	function set_inject(dialog)
    	str dialog
    	setfield /cell/soma inject {getfield {dialog} value}
	end
	//************************ End function set_inject *************************
	//**************************************************************************
	
	//************************ Begin function overlaytoggle ********************
	function overlaytoggle(widget)
    	str widget
    	setfield /##[TYPE=xgraph] overlay {getfield {widget} state}
	end
	//************************ End function overlaytoggle **********************
	//**************************************************************************
	
	//************************ Begin function add_overlay **********************
	function add_overlay
		create xtoggle /control/overlay   -script "overlaytoggle <widget>"
		setfield /control/overlay offlabel "Overlay OFF" onlabel "Overlay ON" \
																								state 0
	end
	//************************ End function add_overlay ************************
	//**************************************************************************

/*********************** End Local Subroutines *******************************/
/*****************************************************************************/


/*********************** Begin Externally Available Subroutines **************/
/*****************************************************************************/

	//************************ Begin function make_control *********************
	function make_control
    	create xform /control [1050,0,250,145]
    	create xlabel /control/label -hgeom 25 -bg cyan -label "CONTROL PANEL"
       
    	create xbutton /control/RESET -wgeom 33%       -script reset
    	create xbutton /control/RUN  -xgeom 0:RESET -ygeom 0:label -wgeom 33% \
         -script step_tmax
         
    	create xbutton /control/QUIT -xgeom 0:RUN -ygeom 0:label -wgeom 34% 	 \
      	-script quit
    	create xdialog /control/Injection -label "Inject Amps" 					 \
         -value 304.95e-12 -script "set_inject <widget>"
   
    	xshow /control
	end
	//************************ End function make_control ***********************
	//**************************************************************************

	//************************ Begin function make_graph ***********************	
	function make_graph (cellname)
		str cellname
		str xcell = "/data"	
		float tmax = 1.1
		float xmin = 0.01
					
		create xform  /data [0,0,1000,1000]
		create xlabel /data/label [10,0,95%,25] 							\
			-label " MSN Cell"  													\
      	-fg    red

		create xgraph /data/soma [10,10:label.bottom, 50%, 45%] 			\
      	-title "Membrane Potential in the Soma"  					\
      	-bg    white

		create xgraph /data/spineCa [10,10:soma.bottom,50%,45%] 	\
      	-title "calcium in dendrites"  										\
      	-bg    white 
	
		create xgraph /data/Ca [10:soma.right,10:label.bottom,50%,45%] \
      	-title "Calcium Concentration: " 			\
      	-bg    white
      
		create xgraph /data/spineVm											\
			[10:spineCa.right,10:Ca.bottom,48%,45%] 					\
      	-title "Fluorescence" 			\
      	-bg    white

		setfield /data/soma      		xmin {xmin} xmax {tmax+0.01}   	\
											ymin -0.1 ymax 0.05
		setfield /data/Ca     		xmin {xmin} xmax {tmax+0.01}   	\
											ymin 4.5e-5 ymax 7e-5
		setfield /data/spineCa 		xmax {tmax+0.8}  ymin 0 			\
											ymax 5.0e-12
		setfield /data/spineVm   	xmax {tmax+0.01}  ymin -1.2e-12 	\
											ymax 1.0e-13

  		useclock /data/v					 	1
  		useclock /data/Ca        			1 
  		useclock /data/channels  			1
		xshow /data
	
		reset

	//addmsg {cellname}/soma/Ca_difshell_6 /data/Ca PLOT C *Ca6 *blue
	//addmsg {cellname}/soma/Ca_difshell_5 /data/Ca PLOT C *Ca5 *pink
	//addmsg {cellname}/soma/Ca_difshell_4 /data/Ca PLOT C *Ca4 *green
	//addmsg {cellname}/soma/Ca_difshell_3 /data/Ca PLOT C *Ca3 *orange
	//addmsg {cellname}/soma/Ca_difshell_2 /data/Ca PLOT C *Ca2 *red
	//addmsg {cellname}/soma/Ca_difshell_1 /data/Ca PLOT C *Ca1soma *black
	
//addmsg {cellname}/tertdend1_1/Ca_difshell_1 /data/spineCa PLOT C *Ca1 *purple

	//addmsg {cellname}/soma/Ca_difshell_1 /data/spineVm PLOT C *somaCa1 *blue
	//addmsg {cellname}/primdend1/Ca_difshell_1 /data/spineVm PLOT C *primCa1 *red
	//addmsg {cellname}/secdend11/Ca_difshell_1 /data/spineVm PLOT C *secCa1 *black
	//addmsg {cellname}/tertdend1_1/Ca_difshell_1 /data/spineVm PLOT C *tertCa1 *orange
	
	//addmsg {cellname}/soma/Ca_difshell_1calbindin /data/spineCa PLOT Bfree *calbindin *black
	//addmsg {cellname}/soma/Ca_difshell_1CaMC /data/spineCa PLOT Bfree *CaM *red
	
	//addmsg {cellname}/soma/Ca_difshell_1calbindin /data/spineVm PLOT Bbound *calbindinbound *blue
	//addmsg {cellname}/soma/Ca_difshell_1CaMC /data/spineVm PLOT Bbound *CaMbound1 *green
	//addmsg {cellname}/soma/Ca_difshell_3CaMC /data/spineVm PLOT Bbound *CaMbound3 *blue
	//addmsg {cellname}/secdend1/Ca_difshell_1CaMC /data/spineVm PLOT Bbound *CaMbound1dend *black
	//addmsg {cellname}/soma/Ca_difshell_3CaMC /data/spineVm PLOT Bbound *CaMbound3dend *red
	
	//addmsg {cellname}/soma/BK_channel /data/Ca PLOT Gk *BK *pink
	//addmsg {cellname}/soma/SK_channel /data/Ca PLOT Gk *SK *purple
	
	//addmsg {cellname}/soma/KIR_channel /data/spineVm PLOT Gk *KIR *blue
	//addmsg {cellname}/soma/KIR_channel /data/spineVm PLOT Ik *KIR *blue
	
	//addmsg {cellname}/soma/KAf_channel /data/spineVm PLOT Gk *Kaf *black
	//addmsg {cellname}/soma/KAf_channel /data/spineVm PLOT Ik *Kaf *black
	
	//addmsg {cellname}/soma/KAs_channel /data/spineVm PLOT Gk *Kas *red
	//addmsg {cellname}/soma/KAs_channel /data/Ca PLOT Ik *Kas *red

	//addmsg {cellname}/soma/Krp_channel /data/Ca PLOT Gk *Krp *green
	//addmsg {cellname}/soma/NaF_channel /data/spineVm PLOT Gk *NaF *orange

	//addmsg {cellname}/soma/NaF_channel /data/spineVm PLOT Ik *NaF *green

	//addmsg {cellname}/tertdend1_1/NR2A/block /data/spineVm PLOT Gk *NMDAblock *red
	//addmsg {cellname}/tertdend1_1/NR2A/GHK /data/Ca PLOT Gk *NMDAghk *green
	//addmsg {cellname}/tertdend1_1/AMPA /data/spineVm PLOT Gk *AMPA *blue
	//addmsg {cellname}/tertdend1_1/GABA /data/spineVm PLOT Gk *GABA *black


	//addmsg {cellname}/secdend11/NR2A/block /data/spineVm PLOT Gk *NMDA *red
	//addmsg {cellname}/secdend11/AMPA /data/spineVm PLOT Gk *AMPA *blue

	//addmsg {cellname}/secdend11/BK_channel /data/Ca PLOT Ik *BKsec *red
	//addmsg {cellname}/soma/BK_channel /data/Ca PLOT Ik *BKsoma *black
	//addmsg {cellname}/tertdend1_1/BK_channel /data/Ca PLOT Ik *BKtert3 *blue
	//addmsg {cellname}/soma/SK_channel /data/spineVm PLOT Ik *SKsoma *green
	//addmsg {cellname}/tertdend1_1/SK_channel /data/Ca PLOT Ik *SKtert3 *purple
	//addmsg {cellname}/secdend11/SK_channel /data/spineVm PLOT Ik *SKsec *orange
	
	addmsg {cellname}/soma /data/soma PLOT Vm *somaVm *blue
	addmsg {cellname}/primdend1 /data/soma PLOT Vm *primVm *red
	addmsg {cellname}/secdend11 /data/soma PLOT Vm *secVm *black
	addmsg {cellname}/tertdend1_1 /data/soma PLOT Vm *tert1m *orange
	addmsg {cellname}/tertdend1_2 /data/soma PLOT Vm *tert2m *green
	addmsg {cellname}/tertdend1_3 /data/soma PLOT Vm *tert3m *purple
/*	
	addmsg {cellname}/primdend1 /data/soma PLOT Vm *primVm *red
	addmsg {cellname}/secdend11 /data/soma PLOT Vm *secVm *green
	addmsg {cellname}/tertdend1_1 /data/soma PLOT Vm *tertVm *black
	addmsg {cellname}/tertdend1_2 /data/soma PLOT Vm *tert2Vm *pink
	addmsg {cellname}/primdend3 /data/soma PLOT Vm *primVm *red
	addmsg {cellname}/secdend32 /data/soma PLOT Vm *secVm *green
	addmsg {cellname}/tertdend3_1 /data/soma PLOT Vm *tertVm *black
	addmsg {cellname}/tertdend3_2 /data/soma PLOT Vm *tert2Vm *pink
*/
	//addmsg {cellname}/soma/Fluo5FVavg /data/spineVm PLOT meanValue *somaF *blue
	//addmsg {cellname}/primdend1/Fluo5FVavg /data/spineVm PLOT meanValue *primF *red
	//addmsg {cellname}/secdend12/Fluo5FVavg /data/spineVm PLOT meanValue *secF *green
	//addmsg {cellname}/tertdend1_1/Fluo5FVavg /data/spineVm PLOT meanValue *tert1_1 *black
	//addmsg {cellname}/tertdend1_2/Fluo5FVavg /data/spineVm PLOT meanValue *tert1_2 *purple
	//addmsg {cellname}/tertdend5_1/Fluo5FVavg /data/spineVm PLOT meanValue *tert5_1 *orange	
	//addmsg {cellname}/tertdend9_1/Fluo5FVavg /data/spineVm PLOT meanValue *tert9_1 *pink

/*	
	addmsg {cellname}/tertdend1_1/NMDApool /data/spineCa PLOT Ca *NMDAF1_1 *black
	addmsg {cellname}/tertdend1_1/LVApool /data/spineCa PLOT Ca *LVA1_1 *gray
	addmsg {cellname}/tertdend1_1/HVApool /data/spineCa PLOT Ca *HVA1_1 *blue
	addmsg {cellname}/tertdend5_1/NMDApool /data/spineCa PLOT Ca *NMDAF5_1 *red
	addmsg {cellname}/tertdend5_1/LVApool /data/spineCa PLOT Ca *LVA5_1 *orange
	addmsg {cellname}/tertdend5_1/HVApool /data/spineCa PLOT Ca *HVA5_1 *green

	//addmsg {cellname}/soma/allpool /data/Ca PLOT Ca *allpoolsoma *blue
	//addmsg {cellname}/primdend1/allpool /data/Ca PLOT Ca *allpoolprim *red
	//addmsg {cellname}/secdend11/allpool /data/Ca PLOT Ca *allpoolsec *black
	//addmsg {cellname}/tertdend1_1/allpool /data/Ca PLOT Ca *allpooltert *orange
	
	addmsg {cellname}/tertdend1_1/allshell /data/Ca PLOT C *1_1 *red
	addmsg {cellname}/tertdend5_1/allshell /data/Ca PLOT C *5_1 *pink

*/	
	//addmsg {cellname}/tertdend1_1/volavg /data/spineCa PLOT meanValue *Volavg1_1 *black
	//addmsg {cellname}/tertdend5_1/volavg /data/spineCa PLOT meanValue *Volavg5_1 *green
	//addmsg {cellname}/tertdend9_1/volavg /data/spineCa PLOT meanValue *Volavg9_1 *red
	//addmsg {cellname}/tertdend13_1/volavg /data/spineCa PLOT meanValue *Volavg13_1 *blue
 	
	//addmsg {cellname}/tertdend1_1/Ca_difshell_1 /data/spineCa PLOT C *Cadifshell1 *cyan

	//addmsg {cellname}/tertdend1_1/allshellcalbindin /data/spineVm PLOT Bbound *1_1 *red
	//addmsg {cellname}/tertdend5_1/allshellcalbindin /data/spineVm PLOT Bbound *5_1 *pink
	

 	//addmsg {cellname}/soma/fluorescence /data/spineVm PLOT ratio *somaF *blue
	//addmsg {cellname}/primdend1/fluorescence /data/spineVm PLOT ratio *primF *red
	//addmsg {cellname}/secdend11/fluorescence /data/spineVm PLOT ratio *secF *black
	//addmsg {cellname}/tertdend1_1/fluorescence /data/spineVm PLOT ratio *tertF *orange
/*
	addmsg {cellname}/tertdend5_1/fluorescence /data/spineVm PLOT ratio *tertF5 *green
	addmsg {cellname}/tertdend9_1/fluorescence /data/spineVm PLOT ratio *tertF9 *red
	addmsg {cellname}/tertdend13_1/fluorescence /data/spineVm PLOT ratio *tertF13 *blue
	//addmsg {cellname}/tertdend1_2/fluorescence /data/spineVm PLOT ratio *tertF2 *purple	
	//addmsg {cellname}/tertdend1_3/fluorescence /data/spineVm PLOT ratio *tertF3 *pink	
	//addmsg {cellname}/tertdend1_5/fluorescence /data/spineVm PLOT ratio *tertF5 *orange	
	//addmsg {cellname}/tertdend1_9/fluorescence /data/spineVm PLOT ratio *tertF9 *magenta	
	
*/	
	//addmsg {cellname}/secdend1/Cortex/block	/data/Ca PLOT Ik *nmda *black
	addmsg {cellname}/soma/volavg /data/spineCa PLOT meanValue *somavolavg *blue
	addmsg {cellname}/primdend1/volavg /data/spineCa PLOT meanValue *primvolavg *red
	addmsg {cellname}/secdend11/volavg /data/spineCa PLOT meanValue *secvolavg *black
	addmsg {cellname}/tertdend1_1/volavg /data/spineCa PLOT meanValue *tert1volavg *orange
	addmsg {cellname}/tertdend1_2/volavg /data/spineCa PLOT meanValue *tert2volavg *green
	addmsg {cellname}/tertdend1_3/volavg /data/spineCa PLOT meanValue *tert3volavg *purple
	addmsg {cellname}/tertdend1_4/volavg /data/spineCa PLOT meanValue *tert4volavg *magenta

/*	
	addmsg {cellname}/soma/CaT_channelGHK /data/spineVm PLOT Gk *CaTghk *green
	addmsg {cellname}/soma/CaR_channelGHK /data/spineVm PLOT Gk *CaR *red
	addmsg {cellname}/soma/CaN_channelGHK /data/spineVm PLOT Gk *CaN *black
	addmsg {cellname}/soma/CaL12_channelGHK /data/spineVm PLOT Gk *12 *magenta
	addmsg {cellname}/soma/CaL13_channelGHK /data/spineVm PLOT Gk *13 *blue	
*/
	addmsg {cellname}/tertdend1_1/CaT_channelGHK /data/spineVm PLOT Gk *CaTghk *green
	addmsg {cellname}/tertdend1_1/CaR_channelGHK /data/spineVm PLOT Gk *CaR *red
	addmsg {cellname}/tertdend1_1/CaL12_channelGHK /data/spineVm PLOT Gk *12 *magenta
	addmsg {cellname}/tertdend1_1/CaL13_channelGHK /data/spineVm PLOT Gk *13 *blue	
/*
	addmsg {cellname}/tertdend1_1/KIR_channel /data/spineCa PLOT Gk *Kir *blue
	addmsg {cellname}/tertdend1_1/KAf_channel /data/spineCa PLOT Gk *KAf *green
	addmsg {cellname}/tertdend1_1/KAs_channel /data/spineCa PLOT Gk *KAs *black
	addmsg {cellname}/tertdend1_1/Krp_channel /data/spineCa PLOT Gk *Krp *purple
	addmsg {cellname}/tertdend1_1/SK_channel /data/spineCa PLOT Gk *SK *red
	addmsg {cellname}/tertdend1_1/BK_channel /data/spineCa PLOT Gk *BK *pink
	addmsg {cellname}/tertdend1_1/GkSum /data/spineCa PLOT output *GkSum *orange
*/
	//addmsg {cellname}/tertdend1_1/GkSum /data/Ca PLOT output *GkSum *orange
	//addmsg {cellname}/tertdend1_1/CaSum /data/Ca PLOT output *CaSum *orange

	//addmsg {cellname}/tertdend1_1/NaFd_channel /data/spineCa PLOT X *act *blue
	//addmsg {cellname}/tertdend1_1/NaFd_channel /data/spineCa PLOT Y *inact *red
	//addmsg {cellname}/tertdend1_1/NaFd_channel /data/spineCa PLOT Z *slowinact *orange

end

	//************************ End function make_graph *************************
	//**************************************************************************
	
/*********************** End Externally Available Subroutines ****************/
/*****************************************************************************/
function add_weight
     int ctr	
     str n_name="/cell"
        
	//create asc_file /output/Somaweight
        //create asc_file /output/Primweight
	//create asc_file /output/Secweight
	create asc_file /output/Tertweight

	//setfield /output/Somaweight   flush 1  leave_open 1 append 1 float_format %0.6g
        //setfield /output/Primweight  flush 1  leave_open 1 append 1 float_format %0.6g
        //setfield /output/Secweight  flush 1  leave_open 1 append 1 float_format %0.6g
	setfield /output/Tertweight   flush 1  leave_open 1 append 1 float_format %0.12g
        
	//useclock /output/Somaweight {CaOutDt}
        //useclock /output/Primweight {CaOutDt}
        //useclock /output/Secweight {CaOutDt}
	useclock /output/Tertweight {CaOutDt}

	//addmsg {n_name}/soma/AMPA /output/Somaweight SAVE synapse[0].weight  
        //addmsg {n_name}/primdend2/AMPA /output/Primweight  SAVE synapse[0].weight  
        //addmsg {n_name}/secdend11/AMPA /output/Secweight  SAVE synapse[0].weight 
	//addmsg {n_name}/tertdend1_1/AMPA /output/Tertweight  SAVE synapse[0].weight  

	//addmsg {n_name}/primdend2/spine_1/head/AMPA /output/Primweight  SAVE synapse[0].weight  
        //addmsg {n_name}/secdend11/spine_1/head/AMPA /output/Secweight  SAVE synapse[0].weight 
	addmsg {n_name}/tertdend1_3/spine_1/head/AMPA /output/Tertweight  SAVE synapse[0].weight 
	//addmsg {n_name}/tertdend1_3/AMPA /output/Tertweight  SAVE synapse[0].weight 
 
end