#!/bin/bash # THIS IS THE HEAD SCRIPT THAT RUNS THE COMPILED C++ CODE FOR NETWORK SIMULATION. IT SUPPLIES MOST OF THE PARAMETERS (ADJUSTABLE) TO THE SIMULATION, CREATES THE SUITABLE SLURM SCRIPTS FOR JOB SUBMISSION (AND SUBMITS IT) AND PREPARES THE OUTPUT DIRECTORY. (may, 2016) #numcorespersim=16 # number of cores per simulation #numprocinnode=16 # number of cores in a node numcorespersim=8 # number of cores per simulation numprocinnode=8 # number of cores in a node numprocinnode_m1=$(echo $numprocinnode - $numcorespersim | bc) exedirname="/users/XXXXX/jcneurosci_code/network_c++_code/" # FULL PATH OF THE DIRECTORY THAT HAS THE COMPILED C++ CODE mscriptdirname="/users/XXXXX/jcneurosci_code/master_control_sims/" # FULL PATH OF THE DIRECTORY THAT HAS THE HEAD BATCH SCRIPT (THAT IS, THIS SCRIPT) connfiledirname="/gpfs/scratch/XXXXX/9x9_test_8/" # FULL PATH OF THE DIRECTORY THAT CONTAINS THE CONNECTIVITY TEMPLATE FILES slurmscriptname="script_fig_two_gamma_" # BUILDING THE SLURM SCRIPT NAME HERE i=0 y=0 cd $mscriptdirname rm *.slurm # REMOVES ALL PREVIOUS SLURM SCRIPTS # EXTERNAL DC CURRENT PARAMETERS i_ext=0.0 i_extd=$(echo $i_ext | sed s/[.]/d/g) i_extfs=0.0 i_extfsd=$(echo $i_extfs | sed s/[.]/d/g) #FS = inhib i_extib=0.0 i_extibd=$(echo $i_extib | sed s/[.]/d/g) # GLIAL COMPONENT PARAMETERS k_for=0.0008 k_back=0.0008 rise=-0.15 # path -0.83, -0.25 Ko_eq_pump=3.6 # from 5 Ko_eq_glia=7.5 # from 7 # canonical 15 #max_pump_current=2 # path 5, 13 max_pump_current=1.45 # from 2 # path 5, 13 k_for_in=0.0008 # INs that go in DB k_back_in=0.0008 rise_in=-0.15 # canonical -1.15 Ko_eq_pump_in=3 # from 3 Ko_eq_glia_in=7.5 # from 7 #max_pump_current_in=2 # path 10 max_pump_current_in=1.9 # from 2 k_for_in_2=0.0008 # spiking interneurons k_back_in_2=0.0008 rise_in_2=-0.15 # canonical -1.15 Ko_eq_pump_in_2=3 Ko_eq_glia_in_2=7.5 #max_pump_current_in_2=2 # path 10 max_pump_current_in_2=1.9 # STIMULATION DC CURRENT PARAMETERS stim_start=40000 # ms stim_end=42500 # ms stim_strength=2.5 # uA/cm2 stim_start_in=40000 stim_end_in=42500 stim_strength_in=2.5 # # SYNAPTIC PARAMETERS (ee_syn = g(e->e) etc) ee_syn=0.0007 # default 0.0005 ei_syn=0.0007 ie_syn=0.025 # 0.004 ii_syn=0.025 #0.004 # BACKGROUND SYNAPTIC ENVIRONMENT gi_zero=0.084 # MEAN si_zero=0.020 # SIGMA inhib_ramp_factor=1.0 # RAMPING UP FACTOR OF EFFECTIVE SYNAPTIC INHIBITION (S^{TERM}_{MAX} IN MANUSCRIPT) DURING DC STIMULATION (SET TO 1 WHEN THERE IS NO GABA DEPLETION) # LOOP OVER A RANGE OF GE_ZERO VALUES for ge_zero in `seq -f %.5f 0.01008 0.00002 0.01010` do # PREPARING THE OUTPUT DIRECTORY condpattern="test_new_prng_${i_extd}_${i_extfsd}" mkdir -p "/users/XXXXX/scratch/${condpattern}" # SIGMA FOR BACKGROUND EXCITATION for se_zero in `seq -f %.5f 0.00250 0.005 0.00250` do ee_synd=$(echo $ee_syn | sed s/[.]/d/g) ei_synd=$(echo $ei_syn | sed s/[.]/d/g) ie_synd=$(echo $ie_syn | sed s/[.]/d/g) ii_synd=$(echo $ii_syn | sed s/[.]/d/g) ge_zerod=$(echo $ge_zero | sed s/[.]/d/g) gi_zerod=$(echo $gi_zero | sed s/[.]/d/g) k_ford=$(echo $k_for | sed s/[.]/d/g) k_backd=$(echo $k_back | sed s/[.]/d/g) rised=$(echo $rise | sed s/[.]/d/g) Ko_eq_pumpd=$(echo $Ko_eq_pump | sed s/[.]/d/g) Ko_eq_gliad=$(echo $Ko_eq_glia | sed s/[.]/g/g) max_pump_currentd=$(echo $max_pump_current | sed s/[.]/g/g) k_for_ind=$(echo $k_for_in | sed s/[.]/d/g) k_back_ind=$(echo $k_back_in | sed s/[.]/d/g) rise_ind=$(echo $rise_in | sed s/[.]/d/g) Ko_eq_pump_ind=$(echo $Ko_eq_pump_in | sed s/[.]/d/g) Ko_eq_glia_ind=$(echo $Ko_eq_glia_in | sed s/[.]/g/g) max_pump_current_ind=$(echo $max_pump_current_in | sed s/[.]/g/g) k_for_in_2d=$(echo $k_for_in_2 | sed s/[.]/d/g) k_back_in_2d=$(echo $k_back_in_2 | sed s/[.]/d/g) rise_in_2d=$(echo $rise_in_2 | sed s/[.]/d/g) Ko_eq_pump_in_2d=$(echo $Ko_eq_pump_in_2 | sed s/[.]/d/g) Ko_eq_glia_in_2d=$(echo $Ko_eq_glia_in_2 | sed s/[.]/g/g) max_pump_current_in_2d=$(echo $max_pump_current_in_2 | sed s/[.]/g/g) stim_startd=$(echo $stim_start | sed s/[.]/d/g) stim_endd=$(echo $stim_end | sed s/[.]/d/g) stim_strengthd=$(echo $stim_strength | sed s/[.]/d/g) stim_start_ind=$(echo $stim_start_in | sed s/[.]/d/g) stim_end_ind=$(echo $stim_end_in | sed s/[.]/d/g) stim_strength_ind=$(echo $stim_strength_in | sed s/[.]/d/g) inhib_ramp_factord=$(echo $inhib_ramp_factor | sed s/[.]/d/g) #ggliad=$(echo $gglia | sed s/[.]/d/g) #kzeroinfd=$(echo $kzeroinf | sed s/[.]/d/g) #gglia_ind=$(echo $gglia_in | sed s/[.]/d/g) #kzeroinf_ind=$(echo $kzeroinf_in | sed s/[.]/d/g) se_zerod=$(echo $se_zero | sed s/[.]/d/g) si_zerod=$(echo $si_zero | sed s/[.]/d/g) patternprefix="multidim_${ge_zerod}_${se_zerod}_${gi_zerod}_${si_zerod}_${k_ford}_${k_backd}_${rised}_${Ko_eq_pumpd}_${Ko_eq_gliad}_${max_pump_currentd}_${stim_startd}_${stim_endd}_${stim_strengthd}_${k_for_ind}_${k_back_ind}_${rise_ind}_${Ko_eq_pump_ind}_${Ko_eq_glia_ind}_${max_pump_current_ind}_${k_for_in_2d}_${k_back_in_2d}_${rise_in_2d}_${Ko_eq_pump_in_2d}_${Ko_eq_glia_in_2d}_${max_pump_current_in_2d}_${stim_start_ind}_${stim_end_ind}_${stim_strength_ind}_${inhib_ramp_factord}_syn_${ee_synd}_${ei_synd}_${ie_synd}_${ii_synd}" # gglia and kzeroinf have to be changed manually # Dec 18th, 2015 (data node fixed; move back to data) dirname="/users/XXXXX/scratch/${condpattern}/${patternprefix}/" # dirname="/users/XXXXX/data/XXXXX/${condpattern}/${patternprefix}/" # End echo $dirname mkdir -p $dirname cd $mscriptdirname cp fig_two_gamma_run_template.sh $dirname # cp mpi_test.sh $dirname cd $exedirname cd $dirname sed -e s,FILEPREFIX,${dirname},g -e s,CONNPREFIX,${connfiledirname},g -e s,PATTERN,${patternprefix},g -e s,MSCRIPTPREFIX,${mscriptdirname},g -e s,IEXTRS,${i_ext},g -e s,IEXTIB,${i_extib},g -e s,IEXTFS,${i_extfs},g -e s,GGLIARISEIN2,${rise_in_2},g -e s,GGLIARISEIN,${rise_in},g -e s,GGLIARISE,${rise},g -e s,GGLIAFORIN2,${k_for_in_2},g -e s,GGLIAFORIN,${k_for_in},g -e s,GGLIAFOR,${k_for},g -e s,GGLIABACKIN2,${k_back_in_2},g -e s,GGLIABACKIN,${k_back_in},g -e s,GGLIABACK,${k_back},g -e s,GGLIAKEQPUMPIN2,${Ko_eq_pump_in_2},g -e s,GGLIAKEQPUMPIN,${Ko_eq_pump_in},g -e s,GGLIAKEQPUMP,${Ko_eq_pump},g -e s,GGLIAKEQGLIAIN2,${Ko_eq_glia_in_2},g -e s,GGLIAKEQGLIAIN,${Ko_eq_glia_in},g -e s,GGLIAKEQGLIA,${Ko_eq_glia},g -e s,GGLIAMAXPUMPIN2,${max_pump_current_in_2},g -e s,GGLIAMAXPUMPIN,${max_pump_current_in},g -e s,GGLIAMAXPUMP,${max_pump_current},g -e s,STIMSTARTIN,${stim_start_in},g -e s,STIMENDIN,${stim_end_in},g -e s,STIMSTRENGTHIN,${stim_strength_in},g -e s,STIMSTART,${stim_start},g -e s,STIMEND,${stim_end},g -e s,STIMSTRENGTH,${stim_strength},g -e s,EE,${ee_syn},g -e s,EI,${ei_syn},g -e s,IE,${ie_syn},g -e s,II,${ii_syn},g -e s,Gee,${ge_zero},g -e s,See,${se_zero},g -e s,Gie,${gi_zero},g -e s,Sie,${si_zero},g -e s,Gei,${ge_zero},g -e s,Sei,${se_zero},g -e s,Gii,${gi_zero},g -e s,Sii,${si_zero},g -e s,POSS_RATE,0,g -e s,POSS_INCR,0,g -e s,INHIBRAMPFACTOR,${inhib_ramp_factor},g fig_two_gamma_run_template.sh > fig_two_gamma_run.sh chmod u+x fig_two_gamma_run.sh cd $mscriptdirname # WRITES THE REQUIRED SLURM SCRIPTS if [ $(( $y % $numprocinnode)) -eq 0 ]; then cat > ${slurmscriptname}${i}.slurm <<EOF #!/bin/bash # Runtime request: #SBATCH --qos=bibs-truccolo-condo # SBATCH --time=00:30:00 #SBATCH --time=30:00:00 # SBATCH --time=35:00:00 # Takes approximately 12 hours for 16x16 simulation of 10s using 1 core # ######################### # Queue request # SBATCH -p default-batch # SBATCH --constraint="e5-2600" # Sandy bridge (sucks--so slow) # SBATCH --constraint="e5000" # Regular # ############################################### # Use 8 nodes (4 MPI per node); altogether 32 MPI jobs, and there are 2 open mp threads per MPI job (so 8 tasks per node). # SBATCH --nodes=1 # SBATCH --tasks-per-node=8 #SBATCH --nodes=1-1 #SBATCH --tasks-per-node=$numprocinnode # SBATCH --exclusive # ############################################### # Specify a job name: #SBATCH -J fig_two_gamma # Specify an output file #SBATCH -o ./fig_two_gamma-%j.out #SBATCH -e ./fig_two_gamma-%j.out cd $mscriptdirname ${dirname}fig_two_gamma_run.sh & EOF #echo $numprocinnode #echo $numprocinnode_m1 else cat >>${slurmscriptname}${i}.slurm<<EOF ${dirname}fig_two_gamma_run.sh & EOF fi if [ $(( $y % $numprocinnode)) -eq $numprocinnode_m1 ]; then i=$(($i+1)) fi y=$(($y+$numcorespersim)) done done for scriptfile in $(ls *.slurm) do cat >>$scriptfile<<EOF wait EOF # FINALLY SUMBITS THE SLURM SCRIPTS sbatch ${scriptfile} done