str spiketypeFlat = "SpikeF1"

//F1 = glu *4; GABA *7

//these three functions used to provide synaptic input to neuron

function makeinputpreFlat(rate, path)
    str rate
    str path
    create randomspike {path}/randomspike
    setfield ^ min_amp 1.0 max_amp 1.0 rate {{rate}*{4}} reset 1 reset_value 0	
    create randomspike {path}/randomspike2
    setfield ^ min_amp 1.0 max_amp 1.0 rate {{rate}*{7}} reset 1 reset_value 0	
 end
	
function makeinputpostFlat(pathspike, path) 
	str path
	int msgnum
	addmsg {pathspike} {path} SPIKE
    	msgnum = {getfield {path} nsynapses} - 1
   	 setfield {path} \
  	 synapse[{msgnum}].weight 1 synapse[{msgnum}].delay 0
end


function stopinputFlat(path)
	str path
	deletemsg {path} 1 -incoming
end

function stopinput2Flat (path)
	str path
	deletemsg {path} 1 -incoming
end

function deletespikesFlat (path)
    str path
    delete {path}/randomspike
    delete {path}/randomspike2
end 

function makeallpreFlat (Hz)
	float Hz
	int i=1
	str path9
	for(i=1;i<5;i=i+1)
		foreach path9({el {cellpath}/primdend{i}})
			makeinputpreFlat {Hz} {path9}
		end
		reset
	end


	str path
	int i=1
	for(i=11;i<13;i=i+1)
		foreach path({el {cellpath}/secdend{i}})
			makeinputpreFlat {Hz} {path}
		end
		reset
	end
	for(i=21;i<23;i=i+1)
		foreach path({el {cellpath}/secdend{i}})
			makeinputpreFlat {Hz} {path}	
		end
		reset
	end
	for(i=31;i<33;i=i+1)
		foreach path({el {cellpath}/secdend{i}})
			makeinputpreFlat {Hz} {path}
		end
		reset
	end
	for(i=41;i<43;i=i+1)
		foreach path({el {cellpath}/secdend{i}})
			makeinputpreFlat {Hz} {path}
		end
		reset
	end
	

	int j=1
	int s=1
	str path4
	str path3
	for(j=1;j<17;j=j+1)
		for(s=1;s<12;s=s+1)
			foreach path4({el {cellpath}/tertdend{j}_{s}})
				makeinputpreFlat {Hz} {path4}
			end
		end
	end
	
	reset 
	reset       // twice?
	
end

function makeallpostFlat 
	str path1
	str path2
	str path5
	str path8
	int i=1
	int x=1

	for(i=1;i<5;i=i+1)
		foreach path8 ({el {cellpath}/primdend{i}})
			makeinputpostFlat {cellpath}/primdend{i}/randomspike {path8}/AMPA
			makeinputpostFlat {cellpath}/primdend{i}/randomspike {path8}/{subunit}
			makeinputpostFlat {cellpath}/primdend{i}/randomspike2 {path8}/GABA
		end
	end
	int i=1
	// sec 
	for(i=11;i<13;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/AMPA
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/{subunit}
			makeinputpostFlat {cellpath}/secdend{i}/randomspike2 {path1}/GABA
		end
	end
	
	for(i=21;i<23;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/AMPA
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/{subunit}
			makeinputpostFlat {cellpath}/secdend{i}/randomspike2 {path1}/GABA
		end
	end
	for(i=31;i<33;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/AMPA
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/{subunit}
			makeinputpostFlat {cellpath}/secdend{i}/randomspike2 {path1}/GABA
		end
	end
	for(i=41;i<43;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/AMPA
			makeinputpostFlat {cellpath}/secdend{i}/randomspike {path1}/{subunit}
			makeinputpostFlat {cellpath}/secdend{i}/randomspike2 {path1}/GABA
		end
	end
		
	int j=1
	int k=1
	 // tert spines
		
	for(j=1;j<17;j=j+1)
		for(k=1;k<12;k=k+1)
			foreach path2 ({el {cellpath}/tertdend{j}_{k}})
				makeinputpostFlat {cellpath}/tertdend{j}_{k}/randomspike {path2}/AMPA
				makeinputpostFlat {cellpath}/tertdend{j}_{k}/randomspike {path2}/{subunit}
				makeinputpostFlat {cellpath}/tertdend{j}_{k}/randomspike2 {path2}/GABA
			end
		end
	end
end

function StopAllFlat
	str path1
	str path2
	str path5
	str path8
	str path9
	int i
	for(i=1;i<5;i=i+1)
		foreach path9 ({el {cellpath}/primdend{i}})
			stopinputFlat {path9}/AMPA
			stopinputFlat {path9}/{subunit}
			stopinput2Flat {path9}/GABA
		end
	end

	int i=1 
	int x=1
	// sec spines
	for(i=11;i<13;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			stopinputFlat {path1}/AMPA
			stopinputFlat {path1}/{subunit}
			stopinput2Flat {path1}/GABA
		end
	end
	
	for(i=21;i<23;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			stopinputFlat {path1}/AMPA
			stopinputFlat {path1}/{subunit}
			stopinput2Flat {path1}/GABA
		end
	end
	
	for(i=31;i<33;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			stopinputFlat {path1}/AMPA
			stopinputFlat {path1}/{subunit}
			stopinput2Flat {path1}/GABA	
		end
	end
	for(i=41;i<43;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			stopinputFlat {path1}/AMPA
			stopinputFlat {path1}/{subunit}
			stopinput2Flat {path1}/GABA
		end
	end
	int j=1
	int k=1
	 // tert spines
	
	for(j=1;j<17;j=j+1)
		for(k=1;k<12;k=k+1)
			foreach path2 ({el {cellpath}/tertdend{j}_{k}})
				stopinputFlat {path2}/AMPA
				stopinputFlat {path2}/{subunit}
				stopinput2Flat {path2}/GABA
			end
		end
	end
	
end
	
//deleting randomspike objects to prevent overwrite errors
 
function DeleteAllSpikesFlat
	int i
	str path9
	str path1
	str path2
	for(i=1;i<5;i=i+1)
		foreach path9 ({el {cellpath}/primdend{i}})
			deletespikesFlat {path9}
		end
	end
	
	int i=1 
	int x=1
	
	// sec spines
	for(i=11;i<13;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			deletespikesFlat {path1}
		end
	end
		
	for(i=21;i<23;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			deletespikesFlat {path1}
		end
	end
	
	for(i=31;i<33;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			deletespikesFlat {path1}
		end
	end
	for(i=41;i<43;i=i+1)
		foreach path1 ({el {cellpath}/secdend{i}})
			deletespikesFlat {path1}
		end
	end
	int j=1
	int k=1
	 // tert spines
	
	for(j=1;j<17;j=j+1)
		for(k=1;k<12;k=k+1)
			foreach path2 ({el {cellpath}/tertdend{j}_{k}})
				deletespikesFlat {path2}
			end
		end
	end
end