From 6faa463fc79ecaa9b3dc07e8f72335e4f42c54a9 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 24 Aug 2017 19:02:39 -0500 Subject: [PATCH 01/20] Initial update --- .../erdos-biogrid/experiment.erdos-biogrid.sh | 55 ++++++------- experiments/erdos-biogrid/temp_file | 3 +- experiments/large-networks/temp_file | 1 - experiments/sanchis/experiment.sanchis.sh | 37 +++++---- experiments/sanchis/footer.sanchis | 5 -- experiments/sanchis/header.sanchis | 10 --- experiments/sanchis/mk_sanchis_table_data.py | 81 ------------------- .../sanchis/sanchis.independence.size.sh | 10 +-- experiments/sanchis/temp_file | 1 - scripts/advanced.size.sh | 20 +++-- scripts/advanced.size.time.sh | 20 ++--- scripts/advanced.solution.sh | 22 +++-- scripts/critical.size.sh | 19 ++--- scripts/graph.name.sh | 9 +-- scripts/graph.size.sh | 8 +- scripts/maxcritical.size.sh | 21 +++-- scripts/simple.size.sh | 20 +++-- scripts/simple.size.time.sh | 19 ++--- scripts/simple.solution.sh | 33 ++++---- 19 files changed, 135 insertions(+), 259 deletions(-) delete mode 100644 experiments/sanchis/footer.sanchis delete mode 100644 experiments/sanchis/header.sanchis delete mode 100644 experiments/sanchis/mk_sanchis_table_data.py diff --git a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh index 02c5b84..a83e3fb 100755 --- a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh +++ b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh @@ -1,41 +1,38 @@ #! /bin/bash time_out=3600 +seeds=5 +seeds_minus_one=$((seeds - 1)) output_dir=erdos-biogrid.$time_out -experiment_name=erdos-biogrid +data_dir=../../data +script_dir=../../scripts -data_dir=../../data/ -script_dir=../../scripts/ -erdos_data_set=$data_dir/erdos -biogrid_data_set=$data_dir/biogrid +experiments=(erdos biogrid) rm -rf old.$output_dir mv $output_dir old.$output_dir mkdir $output_dir -#erdos -$script_dir/graph.name.sh $erdos_data_set | tee $output_dir/erdos.name -$script_dir/graph.size.sh $erdos_data_set | tee $output_dir/erdos.graph.size -$script_dir/critical.size.sh $erdos_data_set $time_out | tee $output_dir/erdos.critical.size -$script_dir/maxcritical.size.sh $erdos_data_set $time_out | tee $output_dir/erdos.maxcritical.size -$script_dir/simple.size.time.sh $erdos_data_set $time_out | tee $output_dir/erdos.simple.size -$script_dir/advanced.size.time.sh $erdos_data_set $time_out| tee $output_dir/erdos.advanced.size - -# biogrid -$script_dir/graph.name.sh $biogrid_data_set | tee $output_dir/biogrid.name -$script_dir/graph.size.sh $biogrid_data_set | tee $output_dir/biogrid.graph.size -$script_dir/critical.size.sh $biogrid_data_set $time_out | tee $output_dir/biogrid.critical.size -$script_dir/maxcritical.size.sh $biogrid_data_set $time_out | tee $output_dir/biogrid.maxcritical.size -$script_dir/simple.size.time.sh $biogrid_data_set $time_out | tee $output_dir/biogrid.simple.size -$script_dir/advanced.size.time.sh $biogrid_data_set $time_out| tee $output_dir/biogrid.advanced.size - -cp header.erdos-biogrid $output_dir/ -cp footer.erdos-biogrid $output_dir/ - -cp mk_erdos_biogrid_table_data.py $output_dir/ -cd $output_dir -cat header.$experiment_name > erdos-biogrid.table.tex -python mk_erdos_biogrid_table_data.py >> erdos-biogrid.table.tex -cat footer.$experiment_name >> erdos-biogrid.table.tex +for item in ${experiments[*]}; do + data_set=$data_dir/$item + for file_name in `ls -1 $data_set/*.graph`; do + temp=${file_name##*/} + temp=${temp%.*} + graph_name=$($script_dir/graph.name.sh $file_name) + graph_size=$($script_dir/graph.size.sh $file_name) + + for seed in $(seq 0 $seeds_minus_one); do + log_file=$output_dir/log.$temp.$seed + $script_dir/critical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/maxcritical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/simple.size.time.sh $file_name $time_out | tee -a $log_file + $script_dir/advanced.size.time.sh $file_name $time_out | tee -a $log_file + echo "$graph_size" >> $log_file + echo "$graph_name" >> $log_file + done + done +done + +#python tablegen.py $output_dir diff --git a/experiments/erdos-biogrid/temp_file b/experiments/erdos-biogrid/temp_file index c6a4748..e3d3ea6 100644 --- a/experiments/erdos-biogrid/temp_file +++ b/experiments/erdos-biogrid/temp_file @@ -1 +1,2 @@ -Homo-sapiens-3.3.122 19592 169285 [0.15s] 150 3 131 +Homo-sapiens-3.3.122 19592 169285 [0.03s] 150 3 131 +Missing diff --git a/experiments/large-networks/temp_file b/experiments/large-networks/temp_file index c749f98..e69de29 100644 --- a/experiments/large-networks/temp_file +++ b/experiments/large-networks/temp_file @@ -1 +0,0 @@ -dblp-2010 326186 807700 [0.65s] 0 0 0 159952 diff --git a/experiments/sanchis/experiment.sanchis.sh b/experiments/sanchis/experiment.sanchis.sh index 72973bf..d1b1c84 100755 --- a/experiments/sanchis/experiment.sanchis.sh +++ b/experiments/sanchis/experiment.sanchis.sh @@ -1,10 +1,12 @@ #! /bin/bash time_out=3600 +seeds=5 +seeds_minus_one=$((seeds - 1)) output_dir=sanchis.$time_out -data_dir=../../data/ +data_dir=../../data_2/ script_dir=../../scripts/ sanchis_data_set=$data_dir/sanchis @@ -12,19 +14,20 @@ rm -rf old.$output_dir mv $output_dir old.$output_dir mkdir $output_dir - -$script_dir/graph.size.sh $sanchis_data_set | tee $output_dir/sanchis.graph.size -./sanchis.independence.size.sh $sanchis_data_set | tee $output_dir/sanchis.independence.size -$script_dir/critical.size.sh $sanchis_data_set $time_out | tee $output_dir/sanchis.critical.size -$script_dir/maxcritical.size.sh $sanchis_data_set $time_out | tee $output_dir/sanchis.maxcritical.size -$script_dir/simple.size.time.sh $sanchis_data_set $time_out | tee $output_dir/sanchis.simple.size -$script_dir/advanced.size.time.sh $sanchis_data_set $time_out | tee $output_dir/sanchis.advanced.size - -cp header.sanchis $output_dir/ -cp footer.sanchis $output_dir/ -cp mk_sanchis_table_data.py $output_dir/ - -cd $output_dir -cat header.sanchis > sanchis.table.tex -python mk_sanchis_table_data.py >> sanchis.table.tex -cat footer.sanchis >> sanchis.table.tex +for file_name in `ls -1 $sanchis_data_set/*.graph`; do + temp=${file_name##*/} + temp=${temp%.*} + graph_size=$($script_dir/graph.size.sh $file_name) + independence_size=$(./sanchis.independence.size.sh $file_name) + + for seed in $(seq 0 $seeds_minus_one); do + log_file=$output_dir/log.$temp.$seed + $script_dir/critical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/maxcritical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/simple.size.time.sh $file_name $time_out | tee -a $log_file + echo "$graph_size" >> $log_file + echo "$independence_size" >> $log_file + done +done + +python tablegen.py $output_dir diff --git a/experiments/sanchis/footer.sanchis b/experiments/sanchis/footer.sanchis deleted file mode 100644 index 00576ea..0000000 --- a/experiments/sanchis/footer.sanchis +++ /dev/null @@ -1,5 +0,0 @@ -\hline -\end{tabular} -\end{center} -\label{table:kernel-sanchis} -\end{table} diff --git a/experiments/sanchis/header.sanchis b/experiments/sanchis/header.sanchis deleted file mode 100644 index 4f47c87..0000000 --- a/experiments/sanchis/header.sanchis +++ /dev/null @@ -1,10 +0,0 @@ -\begin{table} -\caption{We give the kernel size $k$ and running time $t$ for each reduction technique on synthetically-generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices $n$, number of edges $m$, and independence number $\alpha(G)$.} -\scriptsize -\setlength{\tabcolsep}{.7ex} -\begin{center} -\begin{tabular}[tb]{rrr@{\hskip 13pt} rr@{\hskip 13pt} rr@{\hskip 13pt} rr@{\hskip 13pt} rr} -\toprule -\multicolumn{3}{c}{Graph} & \multicolumn{2}{c}{\critical}& \multicolumn{2}{c}{\maxcritical}& \multicolumn{2}{c}{\advanced}&\multicolumn{2}{c}{\simple} \\ -\multicolumn{1}{c}{$n$} & \multicolumn{1}{c}{$m$} & \multicolumn{1}{c}{$\alpha(G)$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} \\ -\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule(r){4-4}\cmidrule(r){5-5}\cmidrule(r){6-6}\cmidrule(r){7-7}\cmidrule(r){8-8}\cmidrule(r){9-9}\cmidrule(r){10-10}\cmidrule{11-11} diff --git a/experiments/sanchis/mk_sanchis_table_data.py b/experiments/sanchis/mk_sanchis_table_data.py deleted file mode 100644 index 9fcac59..0000000 --- a/experiments/sanchis/mk_sanchis_table_data.py +++ /dev/null @@ -1,81 +0,0 @@ -#! /usr/bin/python - -import sys - -def read_in_columns(file_name, rows): - sanchis_file = open(file_name, 'r') - - first_file=(len(rows)==0) - - index=0 - for line in sanchis_file: - if first_file != 1 and index >= len(rows): - print "ERROR! Received too many rows from " + file_name - sys.exit(1) - - if first_file: - rows.append(line.strip().split()) - else: - rows[index].extend(line.strip().split()) - - index = index + 1 - - if index == 0 and "advanced" in file_name: - while index < len(rows): - rows[index].append("Missing") - rows[index].append("Missing") - index = index + 1 - - if index != len(rows): - print "ERROR! Received too few rows from " + file_name - sys.exit(1) - - -rows = [] -read_in_columns('sanchis.graph.size', rows) -read_in_columns('sanchis.independence.size', rows) -read_in_columns('sanchis.critical.size', rows) -read_in_columns('sanchis.maxcritical.size', rows) -read_in_columns('sanchis.advanced.size', rows) -read_in_columns('sanchis.simple.size', rows) - - -for row in rows: - - min_time = sys.maxint - min_kernel = float('inf') - - for index in range(0,len(row)): - if row[index] == '-' or row[index] == "Missing": - continue - - if index in [3,5,7,9]: - if int(row[index]) < min_kernel: - min_kernel = int(row[index]) - - if int(row[index]) == min_kernel and float(row[index+1]) < min_time: - min_time = float(row[index+1]) - - for index in range(0,len(row)): - if row[index] == '-' or row[index] == "Missing": - continue - - if index in [3,5,7,9]: - make_kernel_bold = (int(row[index]) == min_kernel) - make_time_bold = (make_kernel_bold and (abs(float(row[index+1]) - min_time) < 0.001)) - row[index] = '\\numprint{' + row[index] + '}' - row[index+1] = '\\numprint{' + row[index+1] + '}' - - if make_kernel_bold==1: - row[index] = '\\textbf{' + row[index] + '}' - if make_time_bold==1: - row[index+1] = '\\textbf{' + row[index+1] + '}' - - elif index < 3: - row[index] = '\\numprint{' + row[index] + '}' - -for row in rows: - print "&".join(row), "\\\\" - -#print rows - diff --git a/experiments/sanchis/sanchis.independence.size.sh b/experiments/sanchis/sanchis.independence.size.sh index 057f302..aa85ece 100755 --- a/experiments/sanchis/sanchis.independence.size.sh +++ b/experiments/sanchis/sanchis.independence.size.sh @@ -1,9 +1,5 @@ #! /bin/bash -directory_name=$1 - -for i in `ls -1 $directory_name/*.graph`; do - - echo $i | sed -e "s#.*/##g" | sed -e 's#sanchis-[0-9]*-\([0-9]*\).graph#\1#g' - -done +experiment_name=$1 +echo -n "independence_number : " +echo $experiment_name | sed -e "s#.*/##g" | sed -e 's#sanchis-[0-9]*-\([0-9]*\).graph#\1#g' diff --git a/experiments/sanchis/temp_file b/experiments/sanchis/temp_file index 02f8c54..e69de29 100644 --- a/experiments/sanchis/temp_file +++ b/experiments/sanchis/temp_file @@ -1 +0,0 @@ -sanchis-09000-5899 9000 451349 [0.50s] 0 0 0 diff --git a/scripts/advanced.size.sh b/scripts/advanced.size.sh index b5abc20..03651a7 100755 --- a/scripts/advanced.size.sh +++ b/scripts/advanced.size.sh @@ -4,15 +4,13 @@ directory_name=$1 time_out=$2 script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.snap`; do +#works on .snap +/home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/component/bin Main $i& - /home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/component/bin Main $i& - - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "-" - else - cat temp_file | awk '{print $7}' - fi -done +#kill after timeout +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "-" +else + cat temp_file | awk '{print "advanced-set-k : "$7}' +fi diff --git a/scripts/advanced.size.time.sh b/scripts/advanced.size.time.sh index 4c4b136..b5d413a 100755 --- a/scripts/advanced.size.time.sh +++ b/scripts/advanced.size.time.sh @@ -1,16 +1,16 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.snap`; do +#works on .snap +/home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/kernelize/bin Main $experiment_name& - /home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/kernelize/bin Main $i& - - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "- -" - fi -done +#kill after timeout +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "- -" +else + echo 'Missing' >> temp_file +fi diff --git a/scripts/advanced.solution.sh b/scripts/advanced.solution.sh index 31e0e88..8240833 100755 --- a/scripts/advanced.solution.sh +++ b/scripts/advanced.solution.sh @@ -1,18 +1,16 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.snap`; do +#works on .snap +/home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/bin Main $experiment_name > temp_file& - /home/strash/java/jdk1.8.0_60/bin/java -cp /global_data/strash/reduction-exact-mis-experiments/branch-and-reduce/bin Main $i > temp_file& - - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "-" - else - cat temp_file | awk '{print $4}' - fi -done +#kill after timeout +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "-" +else + cat temp_file | awk '{print "advanced-set-solution : "$4}' +fi diff --git a/scripts/critical.size.sh b/scripts/critical.size.sh index e95060e..f948b80 100755 --- a/scripts/critical.size.sh +++ b/scripts/critical.size.sh @@ -1,19 +1,16 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 binary_dir=../../bin script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.graph`; do +$binary_dir/kernel-mis --experiment=kernel-size-critical-set --input-file=$experiment_name --table > temp_file& - $binary_dir/kernel-mis --experiment=kernel-size-critical-set --input-file=$i --table > temp_file& - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "- -" - else - cat temp_file | awk '{print $6 " " $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" - fi -done +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "- -" +else + cat temp_file | awk '{print "critical-set-k : "$6 "\n" "critical-set-time : " $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" +fi diff --git a/scripts/graph.name.sh b/scripts/graph.name.sh index 4861b2b..2f451dd 100755 --- a/scripts/graph.name.sh +++ b/scripts/graph.name.sh @@ -1,9 +1,6 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 -for i in `ls -1 $directory_name/*.graph`; do - - echo $i | sed -e "s#.*/##g" | sed -e "s#\.edges##g" | sed -e "s#\.graph##g" | sed -e "s#\.snap##g" | sed -e "s#-3\.3\.122##g" | sed -e "s#-uniq##g" | sed -e "s#zhishi-##g" | sed -e "s#-friendships##g" | sed -e "s#-relationships##g" | sed -e "s#Immunodeficiency-Virus#HIV#g" - -done +echo -n "graph-name : " +echo $experiment_name | sed -e "s#.*/##g" | sed -e "s#\.edges##g" | sed -e "s#\.graph##g" | sed -e "s#\.snap##g" | sed -e "s#-3\.3\.122##g" | sed -e "s#-uniq##g" | sed -e "s#zhishi-##g" | sed -e "s#-friendships##g" | sed -e "s#-relationships##g" | sed -e "s#Immunodeficiency-Virus#HIV#g" diff --git a/scripts/graph.size.sh b/scripts/graph.size.sh index 921b9c2..03b15e3 100755 --- a/scripts/graph.size.sh +++ b/scripts/graph.size.sh @@ -1,10 +1,6 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 binary_dir=../../bin -for i in `ls -1 $directory_name/*.graph`; do - - head -1 $i | awk '{print $1 " " $2}' - -done +head -1 $experiment_name | awk '{print "vertices : " $1 "\n" "edges : " $2}' diff --git a/scripts/maxcritical.size.sh b/scripts/maxcritical.size.sh index 55f4148..4be6ebc 100755 --- a/scripts/maxcritical.size.sh +++ b/scripts/maxcritical.size.sh @@ -1,19 +1,18 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 binary_dir=../../bin script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.graph`; do - $binary_dir/kernel-mis --experiment=kernel-size-maximum-critical-set --input-file=$i --table > temp_file& - +$binary_dir/kernel-mis --experiment=kernel-size-maximum-critical-set --input-file=$experiment_name --table > temp_file& + #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "- -" - else - cat temp_file | awk '{print $6 " " $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" - fi -done +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "- -" +else + cat temp_file | awk '{print "maxcritical-set-k : "$6 "\n" "maxcritical-set-time : "$4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" + +fi diff --git a/scripts/simple.size.sh b/scripts/simple.size.sh index 6ba8bb3..8a8d709 100755 --- a/scripts/simple.size.sh +++ b/scripts/simple.size.sh @@ -1,19 +1,17 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 binary_dir=../../bin script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.graph`; do - $binary_dir/kernel-mis --experiment=kernel-size-simple --input-file=$i --table > temp_file& - +$binary_dir/kernel-mis --experiment=kernel-size-simple --input-file=$experiment_name --table > temp_file& + #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "- -" - else - cat temp_file | awk '{print $5}' | sed -e "s#\[##g" | sed -e "s#s\]##g" - fi -done +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "- -" +else + cat temp_file | awk '{print "simple-set-k : " $5}' | sed -e "s#\[##g" | sed -e "s#s\]##g" +fi diff --git a/scripts/simple.size.time.sh b/scripts/simple.size.time.sh index a133ac9..093840b 100755 --- a/scripts/simple.size.time.sh +++ b/scripts/simple.size.time.sh @@ -1,19 +1,16 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 binary_dir=../../bin script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.graph`; do +$binary_dir/kernel-mis --experiment=kernel-size-simple --input-file=$experiment_name --table > temp_file& - $binary_dir/kernel-mis --experiment=kernel-size-simple --input-file=$i --table > temp_file& - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then - echo "- -" - else - cat temp_file | awk '{print $5 " " $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" - fi -done +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then + echo "- -" +else + cat temp_file | awk '{print "simple-set-k : "$5 "\n" "simple-set-time : " $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" +fi diff --git a/scripts/simple.solution.sh b/scripts/simple.solution.sh index e5abb2b..08df0de 100755 --- a/scripts/simple.solution.sh +++ b/scripts/simple.solution.sh @@ -1,29 +1,26 @@ #! /bin/bash -directory_name=$1 +experiment_name=$1 time_out=$2 binary_dir=../../bin script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -for i in `ls -1 $directory_name/*.graph`; do +$binary_dir/kernel-mis --experiment=simple-mcs --input-file=$experiment_name --table > temp_file& - $binary_dir/kernel-mis --experiment=simple-mcs --input-file=$i --table > temp_file& - - #kill after timeout - $script_dir/kill_timer.sh $! $time_out - if [ $? -eq 0 ]; then +#kill after timeout +$script_dir/kill_timer.sh $! $time_out +if [ $? -eq 0 ]; then # echo "Killed successfully..." 1>&2 # echo -n "$i " - echo "-" - else + echo "-" +else # echo -n "$i " - grep "ERROR" temp_file 1>&2 - if [ $? -eq 1 ] && [ `cat temp_file | wc -w` != "0" ]; then - cat temp_file | awk '{print $4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" - else - cat temp_file 1>&2 + grep "ERROR" temp_file 1>&2 + if [ $? -eq 1 ] && [ `cat temp_file | wc -w` != "0" ]; then + cat temp_file | awk '{print "simple-solution : "$4}' | sed -e "s#\[##g" | sed -e "s#s\]##g" + else + cat temp_file 1>&2 # echo "Found ERROR!" 1>&2 - echo "-" - fi - fi -done + echo "-" + fi +fi From 6b11e65f2b375d8185aee026c6282d27348fe564 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 24 Aug 2017 19:03:45 -0500 Subject: [PATCH 02/20] Initial update --- experiments/sanchis/tablegen.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 experiments/sanchis/tablegen.py diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py new file mode 100755 index 0000000..260a44d --- /dev/null +++ b/experiments/sanchis/tablegen.py @@ -0,0 +1,29 @@ +#! /usr/bin/python + +import sys +sys.path.append("../../Tablegen") +from DataCruncher import data_cruncher +from TableWriter import table_writer + +same_keys_list = [] +different_keys_list = [] +keys_list = ["vertices", "edges", "independence_number"] +#[data, type, operation, formating] +columns_list = [("critical-set-k", "int"), ("critical-set-time", "float"), ("critical-set-time", "float", "average"), ("maxcritical-set-k", "int"), ("maxcritical-set-time", "float"), ("maxcritical-set-time", "float", "average"), ("simple-set-k", "int"), ("simple-set-time", "float"), ("simple-set-time","float", "average")] +title = "Results of Sanchis Experiments" +author = "Darren Strash, Daniel Gathogo (automated)" +column_heads = [("Graph", 3), ("Critical", 3), ("Maxcritical", 3), ("Simple", 3)] +#column_heads = [] #empty for non publication table +column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list + +experiment_name = "sanchis" +table_format = "latex" #latex, latex_publication, markdown +caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." + +data_dir = sys.argv[1] +experiment = data_cruncher() +experiment.process_dir(data_dir, keys_list) +experiment.validate_data(same_keys_list, different_keys_list) +table = table_writer(experiment) +table.initialize(experiment_name, table_format, title, author) #packages-optional last argument +table.write_table(column_names, column_heads, columns_list, caption) From 4623945b43062a7ba5d1e1a46fbaf7750bf6658a Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 24 Aug 2017 19:06:19 -0500 Subject: [PATCH 03/20] Tablegen library --- Tablegen/DataCruncher.py | 109 ++++++++++++++++++++++++++++++ Tablegen/LaTeXPublication.py | 72 ++++++++++++++++++++ Tablegen/LaTeXTableMaker.py | 97 ++++++++++++++++++++++++++ Tablegen/MarkdownTableMaker.py | 68 +++++++++++++++++++ Tablegen/TableWriter.py | 120 +++++++++++++++++++++++++++++++++ Tablegen/__init__.py | 0 6 files changed, 466 insertions(+) create mode 100644 Tablegen/DataCruncher.py create mode 100644 Tablegen/LaTeXPublication.py create mode 100644 Tablegen/LaTeXTableMaker.py create mode 100644 Tablegen/MarkdownTableMaker.py create mode 100644 Tablegen/TableWriter.py create mode 100644 Tablegen/__init__.py diff --git a/Tablegen/DataCruncher.py b/Tablegen/DataCruncher.py new file mode 100644 index 0000000..fbae72b --- /dev/null +++ b/Tablegen/DataCruncher.py @@ -0,0 +1,109 @@ +#! /usr/bin/python + +import sys +import os +from collections import defaultdict + +class data_cruncher(object): + """docstring for data_cruncher. Reads in data and stores it in a table format.""" + + def __init__(self): + self.experiment_list = defaultdict(lambda : defaultdict(list)) + self.rows = [] + + @staticmethod + def all_same(data_array): + first_element = 1 + first = 1 + for i in data_array: + if first == 1: + first_element = i + first = 0 + if first_element != i: + return False + return True + + @staticmethod + def all_different(data_array): + value_hash=set() + for i in data_array: + value_hash.add(i) + return len(value_hash) == len(data_array) + + @staticmethod + def same_element_count(hash_list): + count = 0 + first_key = 1 + for key in hash_list.keys(): + if first_key == 1: + first_key = 0 + count = len(hash_list[key]) + if count != len(hash_list[key]): + return False + return True + + @staticmethod + def read_in_data(file_name): + temp_file = open(file_name, 'r') + hash_list = defaultdict(list) + + for line in temp_file: + if line.startswith("#") or line.startswith("best") or len(line) == 0: + continue + key_value_pair = line.split(":") + key = key_value_pair[0].strip() + value = key_value_pair[1].strip() + hash_list[key].append(value) + return hash_list + + @staticmethod + def get_keys(hash_list, lst): + temp_list = [] + for key in lst: + if type(key) == int: + temp_list.append(int(hash_list[key][0])) + else: + temp_list.append(hash_list[key][0]) + return tuple(temp_list) + + def get_rows(self): + return self.rows + + def get_data(self, key): + return self.experiment_list[key] + + def update_table(self, hash_list, keys): + if keys not in self.experiment_list: + self.rows.append(keys) + self.experiment_list[keys] = hash_list + else: + for key in hash_list: + self.experiment_list[keys][key].append(hash_list[key][0]) + + def process_file(self, data_file, keys_list): + hash_list = data_cruncher.read_in_data(data_file) + keys = data_cruncher.get_keys(hash_list, keys_list) + self.update_table(hash_list, keys) + + def process_dir(self, data_dir, keys_list): + os.chdir(data_dir) + for data_file in os.listdir('.'): + if str(data_file).startswith("log"): + self.process_file(data_file, keys_list) + self.rows.sort() + + def validate_data(self, same_keys_list, different_keys_list): + for key in self.experiment_list: + for i in same_keys_list: + if not data_cruncher.all_same(self.experiment_list[key][i]): + print "ERROR! different " + i + sys.exit(1) + + for i in different_keys_list: + if not data_cruncher.all_different(self.experiment_list[key][i]): + print "ERROR! duplicate " + i + sys.exit(1) + + if not data_cruncher.same_element_count(self.experiment_list[key]): + print "ERROR! not all runs have same number of statistics" + sys.exit(1) diff --git a/Tablegen/LaTeXPublication.py b/Tablegen/LaTeXPublication.py new file mode 100644 index 0000000..d236ac9 --- /dev/null +++ b/Tablegen/LaTeXPublication.py @@ -0,0 +1,72 @@ +#! /usr/bin/python + +import os +import subprocess +from LaTeXTableMaker import latex_tablemaker + +class latex_publication(latex_tablemaker): + """docstring for latex_publication.""" + def __init__(self, experiment_name): + #super(latex_publication, self).__init__(experiment_name) + self.file_name = experiment_name+".tex" + doc_type = "[11pt]{article}\n" + self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs"] + #os.remove("labeling.self.table.tex") + self.table = open(self.file_name, 'w') + self.table.write("\\documentclass" + doc_type) + + def begin(self, columns_list, heads, caption): + padding = "25pt" + string = "\\begin{document}\n" + string += "\\begin{table}\n" + string += "\\caption{{{}}}\n".format(caption) + string += "\\scriptsize\n" + string += "\\setlength{\\tabcolsep}{1.5ex}\n" + string += "%\\begin{center}\n" + string += "\\begin{tabular}[tb]" + counter = 0 + temp = "" + for head in heads: + temp_str = "\\hskip {}".format(padding) + temp_str = "@{{{}}} ".format(temp_str) + for i in range(head[1]): + temp_str =self.align(columns_list[counter+i])+ temp_str + counter += head[1] + temp += temp_str + temp = temp[:temp.rfind("@")] + string += "{{{}}} \n". format(temp) + string += "\\toprule\n" + self.table.write(string) + + def column_names(self, names, heads, columns_list): + temp_str = "\\multicolumn{{{}}}{{{}}}{{{}}} &" + end_str = "\\\\ \n" + string = "" + center = "c" + for i in range(len(heads)): + string += temp_str.format(heads[i][1], center, heads[i][0]) + + string = string[:-2] + string += end_str + + for i in range(len(names)): + string += temp_str.format(1, center, names[i]) + + string = string[:-2] + string += end_str + temp = "\\cmidrule({}){{{}-{}}}" + for i in range(len(columns_list)): + string += temp.format(self.align(columns_list[i]), i+1, i+1) + string += end_str + self.table.write(string) + + + def footer(self): + string = "\\hline" + string += "\\end{tabular}\n" + string += "%\\end{center}\n" + string += "\\end{table}\n" + string += "\\end{document}\n" + self.table.write(string) + self.table.close() + subprocess.Popen(["pdflatex", self.file_name]) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py new file mode 100644 index 0000000..547823d --- /dev/null +++ b/Tablegen/LaTeXTableMaker.py @@ -0,0 +1,97 @@ +#! /usr/bin/python + +import subprocess + +class latex_tablemaker(object): + """docstring for latex_self.tablemaker.""" + + def __init__(self, experiment_name): + self.file_name = experiment_name+".tex" + doc_type = "journal" + self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs"] + self.table = open(self.file_name, 'w') + self.table.write("\\documentclass{{{}}}\n".format(doc_type)) + + def add_packages(self, lst=[]): + lst += self.default_packages + packages = "\\usepackage[table]{xcolor}\n" + string = "\\usepackage{{{}}}\n" + for item in lst: + packages += string.format(item) + self.table.write(packages) + + def set_title(self, title): + self.table.write("\\title{{{}}}\n".format(title)) + + def set_author(self, author): + self.table.write("\\author{{{}}}\n".format(author)) + + def align(self, key): + right = "r" + left = "l" + if latex_tablemaker.is_float(key): + return right + else: + return left + + def begin(self, columns_list, heads, caption): + orientation = "landscape" + + string = "\\begin{document}\n" + string += "\\rowcolors{2}{gray!25}{white}\n" + string += "\\begin{{{}}}\n".format(orientation) + string += "\\maketitle\n" + string += "%\\begin{center}\n" + string += "\\begin{longtable}[!t]" + key_alignment = "" + for key in columns_list: + key_alignment += self.align(key) + "|" + key_alignment[:-1] + string += "{{{}}}\n".format(key_alignment) + self.table.write(string) + + def column_names(self, names, heads, columns_list): + temp_str = "\\multicolumn{{{}}}{{{}}}{{{}}} &\n" + end_str = "\\\\ \\hline\n" + string = "" + for i in range(len(heads)): + string += temp_str.format(heads[i][1], "c", heads[i][0]) + + string = string[:-2] + string += end_str + + for i in range(len(names)): + if i == 0: + string += "{{{}}} &\n".format(names[0]) + else: + string += temp_str.format(1, self.align(columns_list[i]),names[i]) + + string = string[:-2] + string += end_str + self.table.write(string) + + def print_row(self,reduced_array): + #TODO validate number of columns + self.table.write(" & ".join(reduced_array) + " \\\\\n") + + def footer(self): + orientation = "landscape" + string = "%\end{center}\n" + string += "\\end{longtable}\n" + string += "\\end{{{}}}\n".format(orientation) + string += "\\end{document}\n" + self.table.write(string) + self.table.close() + self.pdf() + + def pdf(self): + subprocess.Popen(["pdflatex", self.file_name]) + #subprocess.Popen(["open", self.file_name]) + + @staticmethod + def is_float(string): + try: + float(string) + return True + except ValueError: + return False diff --git a/Tablegen/MarkdownTableMaker.py b/Tablegen/MarkdownTableMaker.py new file mode 100644 index 0000000..a831fae --- /dev/null +++ b/Tablegen/MarkdownTableMaker.py @@ -0,0 +1,68 @@ +#! /usr/bin/python + +class markdown_tablemaker(object): + """docstring for MarkdownTableMaker.""" + def __init__(self, experiment_name): + self.file_name = experiment_name+".md" + self.table = open(self.file_name, "w") + self.newline = " \n" + + def add_packages(self, lst=[]): + pass + + def set_title(self, title): + string = "## {}".format(title) + self.newline + self.table.write(string) + + def set_author(self, author): + string = "### *{}*".format(author) + self.newline + self.table.write(string) + + def align(self, key): + right = ":" + left = "" + if markdown_tablemaker.is_float(key): + return right + else: + return left + + def begin(self, columns_list, heads, caption): + self.table.write(caption) + + def column_names(self, names, heads, columns_list): + string = "" + hyphen = "---" + #TODO support for colspan +# for head in heads: +# string += head[0] + "|"*head[1] +# string = string + self.newline +# for i in range(len(heads)): +# string += ":" + hyphen + ": | " +# string = string[:-2] + self.newline + + for name in names: + string += name + " | " + string = string[:-2] + self.newline + for i in range(len(names)): + string += hyphen +self.align(columns_list[i]) + " | " + string = string[:-2] + self.newline + self.table.write(string) + + def print_row(self,reduced_array): + string = "" + for item in reduced_array: + string += item + " | " + string = string [:-2] + self.newline + self.table.write(string) + + def footer(self): + self.table.write(self.newline) + self.table.close() + + @staticmethod + def is_float(string): + try: + float(string) + return True + except ValueError: + return False diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py new file mode 100644 index 0000000..7db8381 --- /dev/null +++ b/Tablegen/TableWriter.py @@ -0,0 +1,120 @@ +#! /usr/bin/python + +import sys +from collections import defaultdict +from LaTeXTableMaker import latex_tablemaker +from MarkdownTableMaker import markdown_tablemaker +from LaTeXPublication import latex_publication + +class table_writer(object): + """docstring for table_writer.""" + + def __init__(self, table): + self.table = table + self.output = None + + @staticmethod + def one_row(hash_list, columns_list): + temp_array = [] + for col in columns_list: + data = col[0].strip() + #TODO handle multiple operations per key + data_type = col[1] + if len(col) > 2: + operation = col[2].strip() + else: + operation = "none" + if len(col) > 3: + string_format = col[3].strip() + else: + string_format = "none" + + data = table_writer.data_operation(hash_list, data, operation) + data = table_writer.format_data(data, string_format) + data = table_writer.convert_type(data, data_type) + temp_array.append(data) + + return temp_array + + @staticmethod + def data_operation(hash_list, keyword, operation): + if operation == "average": + return table_writer.get_avg(hash_list, keyword) + elif operation == "maximum": + return table_writer.get_max(hash_list, keyword) + else: + return hash_list[keyword][0] + + @staticmethod + def format_data(string, string_format): + if type(string) == "int": + string_format = "none" + elif table_writer.is_float(string): + string = float(string) + if string_format == "none" and table_writer.is_float(string): + string_format = "{0:.2f}" + if string_format != "none": + string = string_format.format(string) + return string + + @staticmethod + def convert_type(data, data_type): + if data_type == "int" and table_writer.is_float(data): + data = str(int(float(data))) + return data + + @staticmethod + def is_float(string): + try: + float(string) + return True + except ValueError: + return False + + @staticmethod + def get_avg(hash_list, value): + #strip is for time calculations + return sum([float(x.strip("s")) for x in hash_list[value]])/len(hash_list[value]) + + @staticmethod + def get_max(hash_list, value): + return max([float(x) for x in hash_list[value]]) + + @staticmethod + def output_format(table_format, experiment_name): + if table_format == "latex": + output = latex_tablemaker(experiment_name) + elif table_format == "markdown": + output = markdown_tablemaker(experiment_name) + elif table_format == "latex_publication": + output = latex_publication(experiment_name) + return output + + def compare_columns(self, value1, value2): + for key in self.table: + value1 = float(key[value1][0]) + value2 = float(key[value2][0]) + if value1 >= value2: + value1 = "\\textbf{" + value1 + "}" + if value2 >= value1: + value2 = "\\textbf{" + value2 + "}" + + def initialize(self, experiment_name, table_format, title, author, packages=[]): + self.output = table_writer.output_format(table_format, experiment_name) + self.output.add_packages(packages) + self.output.set_title(title) + self.output.set_author(author) + + def write_table(self, column_names, column_heads, columns_list, caption): + rows = self.table.get_rows() + example = list(rows[0]) + example += table_writer.one_row(self.table.get_data(rows[0]), columns_list) #template for aligning the output + self.output.begin(example, column_heads, caption) + self.output.column_names(column_names, column_heads, example) + + for row in rows: + reduced_array = list(row) + reduced_array += table_writer.one_row(self.table.get_data(row), columns_list) + self.output.print_row(reduced_array) + + self.output.footer() diff --git a/Tablegen/__init__.py b/Tablegen/__init__.py new file mode 100644 index 0000000..e69de29 From f98267156b493600259ae238445fb05a9b963fff Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 26 Aug 2017 00:30:26 -0500 Subject: [PATCH 04/20] Subheader experiments --- Tablegen/DataCruncher.py | 6 ++++ Tablegen/LaTeXTableMaker.py | 5 +++ Tablegen/MarkdownTableMaker.py | 3 ++ Tablegen/TableWriter.py | 31 ++++++++++++++----- .../erdos-biogrid/experiment.erdos-biogrid.sh | 13 ++++---- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/Tablegen/DataCruncher.py b/Tablegen/DataCruncher.py index fbae72b..6f6fad3 100644 --- a/Tablegen/DataCruncher.py +++ b/Tablegen/DataCruncher.py @@ -11,6 +11,12 @@ def __init__(self): self.experiment_list = defaultdict(lambda : defaultdict(list)) self.rows = [] + def __repr__(self): + return "< data_cruncher : >", self.experiment_list + + def __str__(self): + return str(self.experiment_list) + @staticmethod def all_same(data_array): first_element = 1 diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index 547823d..12f2415 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -70,6 +70,11 @@ def column_names(self, names, heads, columns_list): string += end_str self.table.write(string) + def print_name(self, length, name): + string = "\\multicolumn{{{}}}{{{}}}{{{}}} \\\\ \n" + string = string.format(length, "l", name) + self.table.write(string) + def print_row(self,reduced_array): #TODO validate number of columns self.table.write(" & ".join(reduced_array) + " \\\\\n") diff --git a/Tablegen/MarkdownTableMaker.py b/Tablegen/MarkdownTableMaker.py index a831fae..3c3b548 100644 --- a/Tablegen/MarkdownTableMaker.py +++ b/Tablegen/MarkdownTableMaker.py @@ -48,6 +48,9 @@ def column_names(self, names, heads, columns_list): string = string[:-2] + self.newline self.table.write(string) + def print_name(self, name): + self.table.write(name) #TODO support for colspan + def print_row(self,reduced_array): string = "" for item in reduced_array: diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index 7db8381..9d01024 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -5,13 +5,16 @@ from LaTeXTableMaker import latex_tablemaker from MarkdownTableMaker import markdown_tablemaker from LaTeXPublication import latex_publication +from DataCruncher import data_cruncher class table_writer(object): """docstring for table_writer.""" - def __init__(self, table): - self.table = table + def __init__(self): + self.experiment_lst = defaultdict(data_cruncher) self.output = None + self.names = [] + self.sub_headers = [] @staticmethod def one_row(hash_list, columns_list): @@ -99,22 +102,34 @@ def compare_columns(self, value1, value2): if value2 >= value1: value2 = "\\textbf{" + value2 + "}" + + def add_experiment(self, experiment, experiment_name, sub_header=""): + self.experiment_lst[experiment_name] = experiment + self.names.append(experiment_name) + self.sub_headers.append(sub_header) + def initialize(self, experiment_name, table_format, title, author, packages=[]): self.output = table_writer.output_format(table_format, experiment_name) self.output.add_packages(packages) self.output.set_title(title) self.output.set_author(author) + def write_sub_table(self, name, table, columns_list): + rows = table.get_rows() + self.output.print_name(len(table.get_data(rows[0])), name) #TODO print_name in TableWriters in multiple sub_tables + for row in rows: + reduced_array = list(row) + reduced_array += table_writer.one_row(table.get_data(row), columns_list) + self.output.print_row(reduced_array) + def write_table(self, column_names, column_heads, columns_list, caption): - rows = self.table.get_rows() + rows = self.experiment_lst[self.names[0]].get_rows() example = list(rows[0]) - example += table_writer.one_row(self.table.get_data(rows[0]), columns_list) #template for aligning the output + example += table_writer.one_row(self.experiment_lst[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output self.output.begin(example, column_heads, caption) self.output.column_names(column_names, column_heads, example) - for row in rows: - reduced_array = list(row) - reduced_array += table_writer.one_row(self.table.get_data(row), columns_list) - self.output.print_row(reduced_array) + for i in range(len(self.names)): + self.write_sub_table(self.sub_headers[i], self.experiment_lst[self.names[i]], columns_list) self.output.footer() diff --git a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh index a83e3fb..e848a32 100755 --- a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh +++ b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh @@ -4,19 +4,18 @@ time_out=3600 seeds=5 seeds_minus_one=$((seeds - 1)) -output_dir=erdos-biogrid.$time_out data_dir=../../data script_dir=../../scripts experiments=(erdos biogrid) -rm -rf old.$output_dir -mv $output_dir old.$output_dir - -mkdir $output_dir - for item in ${experiments[*]}; do + output_dir=$item + rm -rf old.$output_dir + mv $output_dir old.$output_dir + mkdir $output_dir data_set=$data_dir/$item + for file_name in `ls -1 $data_set/*.graph`; do temp=${file_name##*/} temp=${temp%.*} @@ -35,4 +34,4 @@ for item in ${experiments[*]}; do done done -#python tablegen.py $output_dir +python tablegen.py From 35f05de81883fae833a2d125b5c9999c341cf01f Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 28 Aug 2017 15:51:05 -0400 Subject: [PATCH 05/20] Minor changes --- Tablegen/LaTeXPublication.py | 6 ++++-- Tablegen/LaTeXTableMaker.py | 7 ++++--- .../erdos-biogrid/experiment.erdos-biogrid.sh | 21 ++++++++----------- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Tablegen/LaTeXPublication.py b/Tablegen/LaTeXPublication.py index d236ac9..37ececd 100644 --- a/Tablegen/LaTeXPublication.py +++ b/Tablegen/LaTeXPublication.py @@ -29,8 +29,10 @@ def begin(self, columns_list, heads, caption): for head in heads: temp_str = "\\hskip {}".format(padding) temp_str = "@{{{}}} ".format(temp_str) + key_str = "" for i in range(head[1]): - temp_str =self.align(columns_list[counter+i])+ temp_str + key_str +=latex_tablemaker.align(columns_list[counter+i]) + temp_str = key_str + temp_str counter += head[1] temp += temp_str temp = temp[:temp.rfind("@")] @@ -56,7 +58,7 @@ def column_names(self, names, heads, columns_list): string += end_str temp = "\\cmidrule({}){{{}-{}}}" for i in range(len(columns_list)): - string += temp.format(self.align(columns_list[i]), i+1, i+1) + string += temp.format(latex_tablemaker.align(columns_list[i]), i+1, i+1) string += end_str self.table.write(string) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index 12f2415..4a40d2b 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -26,7 +26,8 @@ def set_title(self, title): def set_author(self, author): self.table.write("\\author{{{}}}\n".format(author)) - def align(self, key): + @staticmethod + def align(key): right = "r" left = "l" if latex_tablemaker.is_float(key): @@ -45,7 +46,7 @@ def begin(self, columns_list, heads, caption): string += "\\begin{longtable}[!t]" key_alignment = "" for key in columns_list: - key_alignment += self.align(key) + "|" + key_alignment += latex_tablemaker.align(key) + "|" key_alignment[:-1] string += "{{{}}}\n".format(key_alignment) self.table.write(string) @@ -64,7 +65,7 @@ def column_names(self, names, heads, columns_list): if i == 0: string += "{{{}}} &\n".format(names[0]) else: - string += temp_str.format(1, self.align(columns_list[i]),names[i]) + string += temp_str.format(1, latex_tablemaker.align(columns_list[i]),names[i]) string = string[:-2] string += end_str diff --git a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh index e848a32..aaa1c3a 100755 --- a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh +++ b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh @@ -4,7 +4,7 @@ time_out=3600 seeds=5 seeds_minus_one=$((seeds - 1)) -data_dir=../../data +data_dir=../../data_2 script_dir=../../scripts experiments=(erdos biogrid) @@ -15,22 +15,19 @@ for item in ${experiments[*]}; do mv $output_dir old.$output_dir mkdir $output_dir data_set=$data_dir/$item - + for file_name in `ls -1 $data_set/*.graph`; do temp=${file_name##*/} temp=${temp%.*} graph_name=$($script_dir/graph.name.sh $file_name) graph_size=$($script_dir/graph.size.sh $file_name) - - for seed in $(seq 0 $seeds_minus_one); do - log_file=$output_dir/log.$temp.$seed - $script_dir/critical.size.sh $file_name $time_out | tee -a $log_file - $script_dir/maxcritical.size.sh $file_name $time_out | tee -a $log_file - $script_dir/simple.size.time.sh $file_name $time_out | tee -a $log_file - $script_dir/advanced.size.time.sh $file_name $time_out | tee -a $log_file - echo "$graph_size" >> $log_file - echo "$graph_name" >> $log_file - done + log_file=$output_dir/log.$temp + $script_dir/critical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/maxcritical.size.sh $file_name $time_out | tee -a $log_file + $script_dir/simple.size.time.sh $file_name $time_out | tee -a $log_file + $script_dir/advanced.size.time.sh $file_name $time_out | tee -a $log_file + echo "$graph_size" >> $log_file + echo "$graph_name" >> $log_file done done From 415d8362504bd5e5780fda00b62f5e684026d8e6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 28 Aug 2017 15:54:36 -0400 Subject: [PATCH 06/20] Minor changes --- Tablegen/LaTeXPublication.py | 2 -- Tablegen/LaTeXTableMaker.py | 4 ---- 2 files changed, 6 deletions(-) diff --git a/Tablegen/LaTeXPublication.py b/Tablegen/LaTeXPublication.py index 37ececd..0dc95ad 100644 --- a/Tablegen/LaTeXPublication.py +++ b/Tablegen/LaTeXPublication.py @@ -1,6 +1,5 @@ #! /usr/bin/python -import os import subprocess from LaTeXTableMaker import latex_tablemaker @@ -11,7 +10,6 @@ def __init__(self, experiment_name): self.file_name = experiment_name+".tex" doc_type = "[11pt]{article}\n" self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs"] - #os.remove("labeling.self.table.tex") self.table = open(self.file_name, 'w') self.table.write("\\documentclass" + doc_type) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index 4a40d2b..c268a4f 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -88,11 +88,7 @@ def footer(self): string += "\\end{document}\n" self.table.write(string) self.table.close() - self.pdf() - - def pdf(self): subprocess.Popen(["pdflatex", self.file_name]) - #subprocess.Popen(["open", self.file_name]) @staticmethod def is_float(string): From 10c4f08286f58515c07faad73e1d19cea3785d49 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 28 Aug 2017 21:15:24 -0400 Subject: [PATCH 07/20] Minor changes --- Tablegen/TableWriter.py | 17 +++++++++-------- experiments/erdos-biogrid/temp_file | 2 -- experiments/sanchis/experiment.sanchis.sh | 2 +- experiments/sanchis/tablegen.py | 21 ++++++++++++++------- 4 files changed, 24 insertions(+), 18 deletions(-) delete mode 100644 experiments/erdos-biogrid/temp_file diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index 9d01024..e037401 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -11,10 +11,10 @@ class table_writer(object): """docstring for table_writer.""" def __init__(self): - self.experiment_lst = defaultdict(data_cruncher) + self.experiment_list = defaultdict(data_cruncher) self.output = None - self.names = [] - self.sub_headers = [] + self.names = [] #identify different subtables in an experiment + self.sub_headers = [] #displayed names for the subtables @staticmethod def one_row(hash_list, columns_list): @@ -104,7 +104,7 @@ def compare_columns(self, value1, value2): def add_experiment(self, experiment, experiment_name, sub_header=""): - self.experiment_lst[experiment_name] = experiment + self.experiment_list[experiment_name] = experiment self.names.append(experiment_name) self.sub_headers.append(sub_header) @@ -116,20 +116,21 @@ def initialize(self, experiment_name, table_format, title, author, packages=[]): def write_sub_table(self, name, table, columns_list): rows = table.get_rows() - self.output.print_name(len(table.get_data(rows[0])), name) #TODO print_name in TableWriters in multiple sub_tables + if(len(self.experiment_list) > 1): + self.output.print_name(len(table.get_data(rows[0])), name) for row in rows: reduced_array = list(row) reduced_array += table_writer.one_row(table.get_data(row), columns_list) self.output.print_row(reduced_array) def write_table(self, column_names, column_heads, columns_list, caption): - rows = self.experiment_lst[self.names[0]].get_rows() + rows = self.experiment_list[self.names[0]].get_rows() example = list(rows[0]) - example += table_writer.one_row(self.experiment_lst[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output + example += table_writer.one_row(self.experiment_list[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output self.output.begin(example, column_heads, caption) self.output.column_names(column_names, column_heads, example) for i in range(len(self.names)): - self.write_sub_table(self.sub_headers[i], self.experiment_lst[self.names[i]], columns_list) + self.write_sub_table(self.sub_headers[i], self.experiment_list[self.names[i]], columns_list) self.output.footer() diff --git a/experiments/erdos-biogrid/temp_file b/experiments/erdos-biogrid/temp_file deleted file mode 100644 index e3d3ea6..0000000 --- a/experiments/erdos-biogrid/temp_file +++ /dev/null @@ -1,2 +0,0 @@ -Homo-sapiens-3.3.122 19592 169285 [0.03s] 150 3 131 -Missing diff --git a/experiments/sanchis/experiment.sanchis.sh b/experiments/sanchis/experiment.sanchis.sh index d1b1c84..303af84 100755 --- a/experiments/sanchis/experiment.sanchis.sh +++ b/experiments/sanchis/experiment.sanchis.sh @@ -30,4 +30,4 @@ for file_name in `ls -1 $sanchis_data_set/*.graph`; do done done -python tablegen.py $output_dir +python tablegen.py diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 260a44d..c356f3d 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -1,6 +1,7 @@ #! /usr/bin/python import sys +import os sys.path.append("../../Tablegen") from DataCruncher import data_cruncher from TableWriter import table_writer @@ -16,14 +17,20 @@ #column_heads = [] #empty for non publication table column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list -experiment_name = "sanchis" -table_format = "latex" #latex, latex_publication, markdown +experiment_name = "Sanchis" +experiments = ["sanchis"] +#sub_headers = [] +table_format = "latex_publication" #latex, latex_publication, markdown caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." -data_dir = sys.argv[1] -experiment = data_cruncher() -experiment.process_dir(data_dir, keys_list) -experiment.validate_data(same_keys_list, different_keys_list) -table = table_writer(experiment) +data_dir = os.getcwd() +table = table_writer() table.initialize(experiment_name, table_format, title, author) #packages-optional last argument +for i in range(len(experiments)): + temp_dir = data_dir + "/" + experiments[i] + exp = data_cruncher() + exp.process_dir(temp_dir, keys_list) + exp.validate_data(same_keys_list, different_keys_list) + table.add_experiment(exp, experiments[i]) #sub_headers optional + table.write_table(column_names, column_heads, columns_list, caption) From 1e88a7c069584b9524bca7022e9604dae4aa2cd7 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 28 Aug 2017 21:23:37 -0400 Subject: [PATCH 08/20] Minor changes --- experiments/sanchis/tablegen.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index c356f3d..ac740ee 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -19,7 +19,7 @@ experiment_name = "Sanchis" experiments = ["sanchis"] -#sub_headers = [] +#sub_headers = [] subheadings for each experiment table_format = "latex_publication" #latex, latex_publication, markdown caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." @@ -31,6 +31,6 @@ exp = data_cruncher() exp.process_dir(temp_dir, keys_list) exp.validate_data(same_keys_list, different_keys_list) - table.add_experiment(exp, experiments[i]) #sub_headers optional + table.add_experiment(exp, experiments[i]) #sub_headers[i] optional table.write_table(column_names, column_heads, columns_list, caption) From 24a9c88d34834c9c5922c3d8261bf7a09c44cc16 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 31 Aug 2017 18:03:55 -0400 Subject: [PATCH 09/20] Minor changes --- experiments/sanchis/tablegen.py | 2 +- experiments/sanchis/temp_file | 0 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 experiments/sanchis/temp_file diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index ac740ee..33b8292 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -19,7 +19,7 @@ experiment_name = "Sanchis" experiments = ["sanchis"] -#sub_headers = [] subheadings for each experiment +sub_headers = [] #subheadings for each experiment table_format = "latex_publication" #latex, latex_publication, markdown caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." diff --git a/experiments/sanchis/temp_file b/experiments/sanchis/temp_file deleted file mode 100644 index e69de29..0000000 From c723e69eb5bb7dba558349eba1dbad52b14b8c25 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 10 Sep 2017 21:01:42 -0400 Subject: [PATCH 10/20] Tablegen module --- Tablegen/DataCruncher.py | 10 +- Tablegen/LaTeXPublication.py | 9 +- Tablegen/LaTeXTableMaker.py | 10 +- Tablegen/TableWriter.py | 50 +++++--- Tablegen/__init__.py | 5 + .../experiment.large-networks.sh | 55 ++++---- .../large-networks/footer.large-networks | 5 - .../large-networks/header.large-networks | 10 -- .../mk_large_networks_table_data.py | 117 ------------------ experiments/sanchis/tablegen.py | 8 +- 10 files changed, 88 insertions(+), 191 deletions(-) delete mode 100644 experiments/large-networks/footer.large-networks delete mode 100644 experiments/large-networks/header.large-networks delete mode 100644 experiments/large-networks/mk_large_networks_table_data.py diff --git a/Tablegen/DataCruncher.py b/Tablegen/DataCruncher.py index 6f6fad3..9d85bc5 100644 --- a/Tablegen/DataCruncher.py +++ b/Tablegen/DataCruncher.py @@ -12,10 +12,16 @@ def __init__(self): self.rows = [] def __repr__(self): - return "< data_cruncher : >", self.experiment_list + string = "DataCruncher : " + for item in self.experiment_list: + string += "<{} : {}>\n".format(item, str(self.experiment_list[item])) + return string def __str__(self): - return str(self.experiment_list) + string = "DataCruncher : " + for item in self.experiment_list: + string += "<{} : {}>\n".format(item, str(self.experiment_list[item])) + return string @staticmethod def all_same(data_array): diff --git a/Tablegen/LaTeXPublication.py b/Tablegen/LaTeXPublication.py index 0dc95ad..7ea2108 100644 --- a/Tablegen/LaTeXPublication.py +++ b/Tablegen/LaTeXPublication.py @@ -14,13 +14,14 @@ def __init__(self, experiment_name): self.table.write("\\documentclass" + doc_type) def begin(self, columns_list, heads, caption): - padding = "25pt" + padding = "18pt" string = "\\begin{document}\n" string += "\\begin{table}\n" + string += "\\maketitle\n" + string += "\\begin{center}\n" string += "\\caption{{{}}}\n".format(caption) string += "\\scriptsize\n" - string += "\\setlength{\\tabcolsep}{1.5ex}\n" - string += "%\\begin{center}\n" + string += "\\setlength{\\tabcolsep}{.9ex}\n" string += "\\begin{tabular}[tb]" counter = 0 temp = "" @@ -64,7 +65,7 @@ def column_names(self, names, heads, columns_list): def footer(self): string = "\\hline" string += "\\end{tabular}\n" - string += "%\\end{center}\n" + string += "\\end{center}\n" string += "\\end{table}\n" string += "\\end{document}\n" self.table.write(string) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index c268a4f..93575fd 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -8,7 +8,8 @@ class latex_tablemaker(object): def __init__(self, experiment_name): self.file_name = experiment_name+".tex" doc_type = "journal" - self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs"] + self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs", "numprint"] + #TODO numprint package, textbf self.table = open(self.file_name, 'w') self.table.write("\\documentclass{{{}}}\n".format(doc_type)) @@ -42,7 +43,7 @@ def begin(self, columns_list, heads, caption): string += "\\rowcolors{2}{gray!25}{white}\n" string += "\\begin{{{}}}\n".format(orientation) string += "\\maketitle\n" - string += "%\\begin{center}\n" + string += "\\begin{center}\n" string += "\\begin{longtable}[!t]" key_alignment = "" for key in columns_list: @@ -76,13 +77,14 @@ def print_name(self, length, name): string = string.format(length, "l", name) self.table.write(string) - def print_row(self,reduced_array): + def print_row(self,reduced_array, idx): #TODO validate number of columns + reduced_array[idx] = "\\textbf{{{}}}".format(reduced_array[idx]) self.table.write(" & ".join(reduced_array) + " \\\\\n") def footer(self): orientation = "landscape" - string = "%\end{center}\n" + string = "\\end{center}\n" string += "\\end{longtable}\n" string += "\\end{{{}}}\n".format(orientation) string += "\\end{document}\n" diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index e037401..76ebefc 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -2,10 +2,7 @@ import sys from collections import defaultdict -from LaTeXTableMaker import latex_tablemaker -from MarkdownTableMaker import markdown_tablemaker -from LaTeXPublication import latex_publication -from DataCruncher import data_cruncher +from Tablegen import * class table_writer(object): """docstring for table_writer.""" @@ -16,6 +13,12 @@ def __init__(self): self.names = [] #identify different subtables in an experiment self.sub_headers = [] #displayed names for the subtables + def __repr__(self): + string = "= value2: - value1 = "\\textbf{" + value1 + "}" - if value2 >= value1: - value2 = "\\textbf{" + value2 + "}" + @staticmethod + def min_column(hash_list, lst): + temp = [] + for i in lst: + temp.append(float(hash_list[i])) + minIdx = temp.index(min(temp)) + return lst[minIdx] + @staticmethod + def max_column(hash_list, lst): + temp = [] + for i in lst: + temp.append(float(hash_list[i])) + maxIdx = temp.index(max(temp)) + return lst[maxIdx] + + @staticmethod + def compare_columns(hash_list, lst): + if lst[0] == "max": + return table_writer.max_column(hash_list, lst[1:]) + elif lst[0] == "min": + return table_writer.min_column(hash_list, lst[1:]) def add_experiment(self, experiment, experiment_name, sub_header=""): self.experiment_list[experiment_name] = experiment @@ -114,23 +130,23 @@ def initialize(self, experiment_name, table_format, title, author, packages=[]): self.output.set_title(title) self.output.set_author(author) - def write_sub_table(self, name, table, columns_list): + def write_sub_table(self, name, table, columns_list, compare_cols): rows = table.get_rows() if(len(self.experiment_list) > 1): self.output.print_name(len(table.get_data(rows[0])), name) for row in rows: reduced_array = list(row) reduced_array += table_writer.one_row(table.get_data(row), columns_list) - self.output.print_row(reduced_array) + idx = table_writer.compare_columns(reduced_array, compare_cols) + self.output.print_row(reduced_array, idx) - def write_table(self, column_names, column_heads, columns_list, caption): + def write_table(self, column_names, column_heads, columns_list, compare_cols, caption): rows = self.experiment_list[self.names[0]].get_rows() example = list(rows[0]) example += table_writer.one_row(self.experiment_list[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output self.output.begin(example, column_heads, caption) self.output.column_names(column_names, column_heads, example) - for i in range(len(self.names)): - self.write_sub_table(self.sub_headers[i], self.experiment_list[self.names[i]], columns_list) + self.write_sub_table(self.sub_headers[i], self.experiment_list[self.names[i]], columns_list, compare_cols) self.output.footer() diff --git a/Tablegen/__init__.py b/Tablegen/__init__.py index e69de29..58dadc3 100644 --- a/Tablegen/__init__.py +++ b/Tablegen/__init__.py @@ -0,0 +1,5 @@ +from LaTeXTableMaker import latex_tablemaker +from MarkdownTableMaker import markdown_tablemaker +from LaTeXPublication import latex_publication +from DataCruncher import data_cruncher +from TableWriter import table_writer diff --git a/experiments/large-networks/experiment.large-networks.sh b/experiments/large-networks/experiment.large-networks.sh index 136ba7d..42ae726 100755 --- a/experiments/large-networks/experiment.large-networks.sh +++ b/experiments/large-networks/experiment.large-networks.sh @@ -3,36 +3,35 @@ time_out=3600 experiment_name=large-networks -output_dir=$experiment_name.$time_out data_dir=../../data/ script_dir=../../scripts/ -rm -rf old.$output_dir -mv $output_dir old.$output_dir -mkdir $output_dir - -data_sets="konect snap law" - -for data_set in $data_sets -do - echo "Evaluating data set $data_set..." - -$script_dir/graph.name.sh $data_dir/$data_set | tee $output_dir/$data_set.graph.name -$script_dir/graph.size.sh $data_dir/$data_set | tee $output_dir/$data_set.graph.size -#./critical.size.sh $data_dir/$data_set $time_out | tee $output_dir/$data_set.critical.size -#./maxcritical.size.sh $data_dir/$data_set $time_out | tee $output_dir/$data_set.maxcritical.size -$script_dir/simple.size.sh $data_dir/$data_set $time_out | tee $output_dir/$data_set.simple.size -$script_dir/simple.solution.sh $data_dir/$data_set $time_out | tee $output_dir/$data_set.simple.solution -$script_dir/advanced.size.sh $data_dir/$data_set $time_out | tee $output_dir/$data_set.advanced.size -$script_dir/advanced.solution.sh $data_dir/$data_set $time_out| tee $output_dir/$data_set.advanced.solution - +data_sets="snap konect law" + +for item in $data_sets; do + echo "Evaluating data set $item..." + output_dir=$item + rm -rf old.$output_dir + mv $output_dir old.$output_dir + mkdir $output_dir + data_set=$data_dir/$item + + for file_name in `ls -1 $data_set/*.graph`; do + temp=${file_name##*/} + temp=${temp%.*} + graph_name=$($script_dir/graph.name.sh $file_name) + graph_size=$($script_dir/graph.size.sh $file_name) + log_file=$output_dir/log.$temp + + #./critical.size.sh $data_dir/$item $time_out | tee $output_dir/$item.critical.size + #./maxcritical.size.sh $data_dir/$item $time_out | tee $output_dir/$item.maxcritical.size + $script_dir/simple.size.sh $file_name $time_out | tee -a $log_file + $script_dir/simple.solution.sh $file_name $time_out | tee -a $log_file + $script_dir/advanced.size.sh $file_name $time_out | tee -a $log_file + $script_dir/advanced.solution.sh $file_name $time_out | tee -a $log_file + echo "$graph_size" >> $log_file + echo "$graph_name" >> $log_file + done done -cp header.$experiment_name $output_dir/ -cp footer.$experiment_name $output_dir/ - -cp mk_large_networks_table_data.py $output_dir/ -cd $output_dir -cat header.$experiment_name > $experiment_name.table.tex -python mk_large_networks_table_data.py >> $experiment_name.table.tex -cat footer.$experiment_name >> $experiment_name.table.tex +python tablegen.py diff --git a/experiments/large-networks/footer.large-networks b/experiments/large-networks/footer.large-networks deleted file mode 100644 index a5ee32c..0000000 --- a/experiments/large-networks/footer.large-networks +++ /dev/null @@ -1,5 +0,0 @@ -\hline -\end{tabular} -\end{center} -\label{table:solution-large-networks} -\end{table} diff --git a/experiments/large-networks/header.large-networks b/experiments/large-networks/header.large-networks deleted file mode 100644 index 032b5d3..0000000 --- a/experiments/large-networks/header.large-networks +++ /dev/null @@ -1,10 +0,0 @@ -\begin{table} -\caption{We give the size $k_{\max}$ of largest connected component in the kernel from each reduction technique and the running time $t$ of each algorithm to compute an exact maximum independent set. We further give the number of vertices $n$ and edges $m$ for each graph.} -\scriptsize -\setlength{\tabcolsep}{.7ex} -\begin{center} -\begin{tabular}[tb]{lrr@{\hskip 13pt} rr@{\hskip 13pt} rr} -\toprule -\multicolumn{3}{c}{Graph} & \multicolumn{2}{c}{\ai} &\multicolumn{2}{c}{\simple+\mcs}\\ -\multicolumn{1}{l}{Name} & \multicolumn{1}{c}{$n$} & \multicolumn{1}{c}{$m$} & \multicolumn{1}{c}{$k_{\max}$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k_{\max}$} & \multicolumn{1}{c}{$t$} \\ -\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule(r){4-4}\cmidrule(r){5-5}\cmidrule(r){6-6}\cmidrule(r){7-7} \\[2pt] diff --git a/experiments/large-networks/mk_large_networks_table_data.py b/experiments/large-networks/mk_large_networks_table_data.py deleted file mode 100644 index 3192a38..0000000 --- a/experiments/large-networks/mk_large_networks_table_data.py +++ /dev/null @@ -1,117 +0,0 @@ -#! /usr/bin/python - -import sys -import re - -def read_in_columns(file_name, rows): - critical_kernel_file = open(file_name, 'r') - - first_file=(len(rows)==0) - - index=0 - for line in critical_kernel_file: - if first_file != 1 and index >= len(rows): - print "ERROR! Received too many rows from " + file_name - sys.exit(1) - - if first_file: - rows.append(line.strip().split()) - else: - rows[index].extend(line.strip().split()) - - index = index + 1 - - if index == 0 and "advanced" in file_name: - while index < len(rows): - rows[index].append("Missing") - index = index + 1 - - if index != len(rows): - print "ERROR! Received too few rows from " + file_name - sys.exit(1) - - -def format_numbers(rows): - for row in rows: - - min_time = sys.maxint - min_kernel = float('inf') - for index in range(0,len(row)): - if row[index] == '-' or row[index] == 'Missing': - continue - - #print "\"" + row[index] + "\"" - if index in [3,5,7,9]: - if int(row[index]) < min_kernel: - min_kernel = int(row[index]) - - if index in [4,6,8,10]: - if float(row[index]) < min_time: - min_time = float(row[index]) - - for index in range(0,len(row)): - make_bold=0 - - if row[index] == '-' or row[index] == 'Missing': - continue - - if index in [3,5]: - make_bold=(int(row[index]) == min_kernel) - - if index in [4,6]: - make_bold=(abs(float(row[index]) - min_time) < 0.001) - - if index != 0: - row[index] = '\\numprint{' + row[index] + '}' - - if make_bold == 1: - row[index] = '\\textbf{' + row[index] + '}' - - - -def read_and_format_rows(data_set_name, rows): - read_in_columns(data_set_name + '.graph.name', rows) - read_in_columns(data_set_name + '.graph.size', rows) -# read_in_columns(data_set_name + '.critical.size', rows) -# read_in_columns(data_set_name + '.maxcritical.size', rows) - read_in_columns(data_set_name + '.advanced.size', rows) - read_in_columns(data_set_name + '.advanced.solution',rows) - read_in_columns(data_set_name + '.simple.size', rows) - read_in_columns(data_set_name + '.simple.solution', rows) - format_numbers(rows) - - - -def print_rows(data_set_name, rows, last): - pattern = re.compile('.*\{(.*\d)\}') - - num_columns = 7 - if len(rows) > 0: - num_columns = len(rows[0]) - sys.stdout.write("\\multicolumn{" + str(num_columns) + "}{l}{\\bf{" + data_set_name + "}} \\\\[2pt]") - for row in rows: - print "" - m = pattern.match(row[1]) - if m and int(m.group(1)) < 100: - continue - sys.stdout.write("&".join(row) + " \\\\") - if last == 1 or len(rows) == 0: - print "" - else: - print "[8pt]" - -# read data sets into the rows -law_rows = [] -snap_rows = [] -konect_rows = [] - -read_and_format_rows('law' , law_rows) -read_and_format_rows('snap' , snap_rows) -read_and_format_rows('konect', konect_rows) - -print_rows("LAW Graphs" , law_rows , 0) -print_rows("SNAP Graphs" , snap_rows , 0) -print_rows("KONECT Graphs", konect_rows, 1) - -#print rows - diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 33b8292..37772b1 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -2,9 +2,8 @@ import sys import os -sys.path.append("../../Tablegen") -from DataCruncher import data_cruncher -from TableWriter import table_writer +sys.path.append("../../") +from Tablegen import * same_keys_list = [] different_keys_list = [] @@ -17,6 +16,7 @@ #column_heads = [] #empty for non publication table column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list +compare_cols = ["min", 4, 7] #highlight maximum or minimum, zero-indexed count in column_names experiment_name = "Sanchis" experiments = ["sanchis"] sub_headers = [] #subheadings for each experiment @@ -33,4 +33,4 @@ exp.validate_data(same_keys_list, different_keys_list) table.add_experiment(exp, experiments[i]) #sub_headers[i] optional -table.write_table(column_names, column_heads, columns_list, caption) +table.write_table(column_names, column_heads, columns_list, compare_cols, caption) From 5f1e32318a098cc131e92c3840ac73012360480a Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 10 Sep 2017 21:25:48 -0400 Subject: [PATCH 11/20] Tablegen module update --- Tablegen/LaTeXTableMaker.py | 3 ++- Tablegen/TableWriter.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index 93575fd..0fd5a8e 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -79,7 +79,8 @@ def print_name(self, length, name): def print_row(self,reduced_array, idx): #TODO validate number of columns - reduced_array[idx] = "\\textbf{{{}}}".format(reduced_array[idx]) + if idx is not None: + reduced_array[idx] = "\\textbf{{{}}}".format(reduced_array[idx]) self.table.write(" & ".join(reduced_array) + " \\\\\n") def footer(self): diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index 76ebefc..3a86e82 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -140,7 +140,7 @@ def write_sub_table(self, name, table, columns_list, compare_cols): idx = table_writer.compare_columns(reduced_array, compare_cols) self.output.print_row(reduced_array, idx) - def write_table(self, column_names, column_heads, columns_list, compare_cols, caption): + def write_table(self, column_names, column_heads, columns_list, compare_cols=[], caption=""): rows = self.experiment_list[self.names[0]].get_rows() example = list(rows[0]) example += table_writer.one_row(self.experiment_list[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output From b617175ff7cdec4c93aad7358589a60aba9000a5 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 10 Sep 2017 21:41:01 -0400 Subject: [PATCH 12/20] Tablegen Module update --- Tablegen/TableWriter.py | 22 +++++----------------- experiments/sanchis/tablegen.py | 2 +- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index 3a86e82..c68ff60 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -97,27 +97,15 @@ def output_format(table_format, experiment_name): return output @staticmethod - def min_column(hash_list, lst): - temp = [] - for i in lst: - temp.append(float(hash_list[i])) - minIdx = temp.index(min(temp)) - return lst[minIdx] - - @staticmethod - def max_column(hash_list, lst): + def compare_columns(hash_list, lst): temp = [] - for i in lst: + for i in lst[1:]: temp.append(float(hash_list[i])) - maxIdx = temp.index(max(temp)) - return lst[maxIdx] - - @staticmethod - def compare_columns(hash_list, lst): if lst[0] == "max": - return table_writer.max_column(hash_list, lst[1:]) + idx = temp.index(max(temp)) elif lst[0] == "min": - return table_writer.min_column(hash_list, lst[1:]) + idx = temp.index(min(temp)) + return lst[idx+1] def add_experiment(self, experiment, experiment_name, sub_header=""): self.experiment_list[experiment_name] = experiment diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 37772b1..16900fa 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -16,7 +16,7 @@ #column_heads = [] #empty for non publication table column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list -compare_cols = ["min", 4, 7] #highlight maximum or minimum, zero-indexed count in column_names +compare_cols = ["min", 4, 7, 10] #highlight maximum or minimum, zero-indexed count in column_names experiment_name = "Sanchis" experiments = ["sanchis"] sub_headers = [] #subheadings for each experiment From 8266bd630b98863bb4f23610e2924ddf10389277 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 10 Sep 2017 22:07:10 -0400 Subject: [PATCH 13/20] Tablegen Module update --- Tablegen/LaTeXTableMaker.py | 2 +- Tablegen/TableWriter.py | 4 +- .../erdos-biogrid/footer.erdos-biogrid | 4 - .../erdos-biogrid/header.erdos-biogrid | 11 -- .../mk_erdos_biogrid_table_data.py | 115 ------------------ experiments/erdos-biogrid/tablegen.py | 36 ++++++ experiments/large-networks/tablegen.py | 35 ++++++ experiments/large-networks/temp_file | 0 experiments/sanchis/tablegen.py | 2 +- 9 files changed, 76 insertions(+), 133 deletions(-) delete mode 100644 experiments/erdos-biogrid/footer.erdos-biogrid delete mode 100644 experiments/erdos-biogrid/header.erdos-biogrid delete mode 100644 experiments/erdos-biogrid/mk_erdos_biogrid_table_data.py create mode 100644 experiments/erdos-biogrid/tablegen.py create mode 100644 experiments/large-networks/tablegen.py delete mode 100644 experiments/large-networks/temp_file diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py index 0fd5a8e..abd37a0 100644 --- a/Tablegen/LaTeXTableMaker.py +++ b/Tablegen/LaTeXTableMaker.py @@ -74,7 +74,7 @@ def column_names(self, names, heads, columns_list): def print_name(self, length, name): string = "\\multicolumn{{{}}}{{{}}}{{{}}} \\\\ \n" - string = string.format(length, "l", name) + string = string.format(length, "l", "\\textbf{{{}}}".format(name)) self.table.write(string) def print_row(self,reduced_array, idx): diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py index c68ff60..c518381 100644 --- a/Tablegen/TableWriter.py +++ b/Tablegen/TableWriter.py @@ -97,7 +97,9 @@ def output_format(table_format, experiment_name): return output @staticmethod - def compare_columns(hash_list, lst): + def compare_columns(hash_list, lst=[]): + if(len(lst) < 3): + return temp = [] for i in lst[1:]: temp.append(float(hash_list[i])) diff --git a/experiments/erdos-biogrid/footer.erdos-biogrid b/experiments/erdos-biogrid/footer.erdos-biogrid deleted file mode 100644 index 13380de..0000000 --- a/experiments/erdos-biogrid/footer.erdos-biogrid +++ /dev/null @@ -1,4 +0,0 @@ -\hline -\end{tabular} -\end{center} -\end{table} diff --git a/experiments/erdos-biogrid/header.erdos-biogrid b/experiments/erdos-biogrid/header.erdos-biogrid deleted file mode 100644 index 745280f..0000000 --- a/experiments/erdos-biogrid/header.erdos-biogrid +++ /dev/null @@ -1,11 +0,0 @@ -\begin{table}[!tbh] -\caption{We give the kernel size $k$ and running time $t$ for each reduction technique on Erd\H{o}s and BioGRID graphs. We further give the number of vertices $n$ and edges $m$ for each graph.} -\label{table:kernel-erdos-biogrid} -\scriptsize -\setlength{\tabcolsep}{.7ex} -\begin{center} -\begin{tabular}[tb]{lrr@{\hskip 7pt} rr@{\hskip 7pt} rr@{\hskip 7pt} rr@{\hskip 7pt} rr} -\toprule -\multicolumn{3}{c}{Graph} & \multicolumn{2}{c}{\critical}& \multicolumn{2}{c}{\maxcritical} & \multicolumn{2}{c}{\advanced}&\multicolumn{2}{c}{\simple} \\ -\multicolumn{1}{l}{Name} & \multicolumn{1}{c}{$n$} & \multicolumn{1}{c}{$m$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} & \multicolumn{1}{c}{$k$} & \multicolumn{1}{c}{$t$} \\ -\cmidrule(r){1-1}\cmidrule(r){2-2}\cmidrule(r){3-3}\cmidrule(r){4-4}\cmidrule(r){5-5}\cmidrule(r){6-6}\cmidrule(r){7-7}\cmidrule(r){8-8}\cmidrule(r){9-9}\cmidrule{10-10}\cmidrule{11-11} \\[2pt] diff --git a/experiments/erdos-biogrid/mk_erdos_biogrid_table_data.py b/experiments/erdos-biogrid/mk_erdos_biogrid_table_data.py deleted file mode 100644 index 0603001..0000000 --- a/experiments/erdos-biogrid/mk_erdos_biogrid_table_data.py +++ /dev/null @@ -1,115 +0,0 @@ -#! /usr/bin/python - -import sys -import re - -def read_in_columns(file_name, rows): - critical_kernel_file = open(file_name, 'r') - - first_file=(len(rows)==0) - - index=0 - for line in critical_kernel_file: - if first_file != 1 and index >= len(rows): - print "ERROR! Received too many rows from " + file_name - sys.exit(1) - - if first_file: - rows.append(line.strip().split()) - else: - rows[index].extend(line.strip().split()) - - index = index + 1 - - if index == 0 and "advanced" in file_name: - while index < len(rows): - rows[index].append("Missing") - rows[index].append("Missing") - index = index + 1 - - if index != len(rows): - print "ERROR! Received too few rows from " + file_name - sys.exit(1) - - -def format_numbers(rows): - for row in rows: - - min_time = sys.maxint - min_kernel = float('inf') - - for index in range(0,len(row)): - if row[index] == '-' or row[index] == 'Missing': - continue - - if index in [3,5,7,9]: - if int(row[index]) < min_kernel: - min_kernel = int(row[index]) - - if int(row[index]) == min_kernel and float(row[index+1]) < min_time: - min_time = float(row[index+1]) - - - for index in range(0,len(row)): - - if row[index] == '-' or row[index] == 'Missing': - continue - - if index in [3,5,7,9]: - make_kernel_bold = (int(row[index]) == min_kernel) - make_time_bold = (make_kernel_bold and (abs(float(row[index+1]) - min_time) < 0.001)) - - row[index] = '\\numprint{' + row[index] + '}' - row[index+1] = '\\numprint{' + row[index+1] + '}' - - if make_kernel_bold == 1: - row[index] = '\\textbf{' + row[index] + '}' - - if make_time_bold == 1: - row[index+1] = '\\textbf{' + row[index+1] + '}' - elif index < 3 and index > 0: - row[index] = '\\numprint{' + row[index] + '}' - - - -def read_and_format_rows(data_set_name, rows): - read_in_columns(data_set_name + '.name', rows) - read_in_columns(data_set_name + '.graph.size', rows) - read_in_columns(data_set_name + '.critical.size', rows) - read_in_columns(data_set_name + '.maxcritical.size', rows) - read_in_columns(data_set_name + '.advanced.size', rows) - read_in_columns(data_set_name + '.simple.size', rows) - format_numbers(rows) - - - -def print_rows(data_set_name, rows, last): - pattern = re.compile('.*\{(.*\d)\}') - - if len(rows) > 0: - num_columns = len(rows[0]) - sys.stdout.write("\\multicolumn{" + str(num_columns) + "}{l}{\\bf{" + data_set_name + "}} \\\\[2pt]") - for row in rows: - print "" - m = pattern.match(row[1]) - if m and int(m.group(1)) < 100: - continue - sys.stdout.write("&".join(row) + " \\\\") - if last == 1 or len(rows) == 0: - print "" - else: - print "[8pt]" - - -# read data sets into the rows -erdos_rows = [] -biogrid_rows = [] - -read_and_format_rows('erdos' , erdos_rows) -read_and_format_rows('biogrid', biogrid_rows) - -print_rows("Erd\\H{o}s Graphs", erdos_rows, 0) -print_rows("BioGRID Graphs" , biogrid_rows, 1) - -#print rows - diff --git a/experiments/erdos-biogrid/tablegen.py b/experiments/erdos-biogrid/tablegen.py new file mode 100644 index 0000000..9d21f09 --- /dev/null +++ b/experiments/erdos-biogrid/tablegen.py @@ -0,0 +1,36 @@ +#! /usr/bin/python + +import sys +import os +sys.path.append("../../") +from Tablegen import * + +same_keys_list = [] +different_keys_list = [] +keys_list = ["graph-name"] +#[data, type, operation, formating] +columns_list = [("vertices", "int"), ("edges", "int"), ("critical-set-k", "int"), ("critical-set-time", "float"), ("maxcritical-set-k", "int"), ("maxcritical-set-time", "float"), ("simple-set-k", "int"), ("simple-set-time", "float")] +title = "Results of Erdos and BioGRID Experiments" +author = "Darren Strash, Daniel Gathogo (automated)" +column_heads = [("Graph", 3), ("Critical", 2), ("Maxcritical", 2), ("Simple", 2)] +#column_heads = [] #empty for non publication table +column_names = ["Name", "n", "m", "k", "t", "k", "t", "k", "t"] #start with names for each key in keys_list + +compare_cols = ["min", 4, 6] #highlight max or min, zero-indexed count in column_names +experiment_name = "Erdos-BioGRID" +experiments = ["erdos", "biogrid"] +sub_headers = ["Erdos Graphs", "BioGRID Graphs"] +table_format = "latex_publication" #latex, latex_publication, markdown +caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." + +data_dir = os.getcwd() +table = table_writer() +table.initialize(experiment_name, table_format, title, author) #packages-optional last argument +for i in range(len(experiments)): + temp_dir = data_dir + "/" + experiments[i] + exp = data_cruncher() + exp.process_dir(temp_dir, keys_list) + exp.validate_data(same_keys_list, different_keys_list) + table.add_experiment(exp, experiments[i], sub_headers[i]) #sub_headers optional + +table.write_table(column_names, column_heads, columns_list, compare_cols, caption) diff --git a/experiments/large-networks/tablegen.py b/experiments/large-networks/tablegen.py new file mode 100644 index 0000000..09b19ab --- /dev/null +++ b/experiments/large-networks/tablegen.py @@ -0,0 +1,35 @@ +#! /usr/bin/python + +import sys +import os +sys.path.append("../../") +from Tablegen import * + +same_keys_list = [] +different_keys_list = [] +keys_list = ["graph-name"] +#[data, type, operation, formating] +columns_list = [("vertices", "int"), ("edges", "int"), ("simple-set-k", "int"), ("simple-solution", "float")] +title = "Results of Large Networks Experiments" +author = "Darren Strash, Daniel Gathogo (automated)" +column_heads = [("Graph", 3), ("Simple+MCS", 2)] +#column_heads = [] #empty for non publication table +column_names = ["Name", "n", "m", "k", "t"] #start with names for each key in keys_list + +compare_cols = [] #highlight max or min, zero-indexed count in column_names +experiment_name = "Large-Networks" +experiments = ["law", "snap", "konect"] +sub_headers = ["LAW Graphs", "SNAP Graphs", "KONECT Graphs"] +table_format = "latex_publication" #latex, latex_publication, markdown +caption = "We give the size kmax of largest connected component in the kernel from each reduction technique and the running time t of each algorithm to compute an exact maximum independent set. We further give the number of vertices n and edges m for each graph." + +data_dir = os.getcwd() +table = table_writer() +table.initialize(experiment_name, table_format, title, author) #packages-optional last argument +for i in range(len(experiments)): + temp_dir = data_dir + "/" + experiments[i] + exp = data_cruncher() + exp.process_dir(temp_dir, keys_list) + exp.validate_data(same_keys_list, different_keys_list) + table.add_experiment(exp, experiments[i], sub_headers[i]) #sub_headers optional +table.write_table(column_names, column_heads, columns_list, compare_cols, caption) diff --git a/experiments/large-networks/temp_file b/experiments/large-networks/temp_file deleted file mode 100644 index e69de29..0000000 diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 16900fa..d9b92a7 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -16,7 +16,7 @@ #column_heads = [] #empty for non publication table column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list -compare_cols = ["min", 4, 7, 10] #highlight maximum or minimum, zero-indexed count in column_names +compare_cols = ["min", 4, 7, 10] #highlight max or min, zero-indexed count in column_names experiment_name = "Sanchis" experiments = ["sanchis"] sub_headers = [] #subheadings for each experiment From f9b6697a37e017055a5591727b08ff0668224eac Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 14 Sep 2017 13:07:10 -0400 Subject: [PATCH 14/20] Use table_gen package --- Tablegen/DataCruncher.py | 121 --------------------- Tablegen/LaTeXPublication.py | 73 ------------- Tablegen/LaTeXTableMaker.py | 102 ------------------ Tablegen/MarkdownTableMaker.py | 71 ------------- Tablegen/TableWriter.py | 142 ------------------------- Tablegen/__init__.py | 5 - experiments/erdos-biogrid/tablegen.py | 2 +- experiments/large-networks/tablegen.py | 2 +- experiments/sanchis/tablegen.py | 2 +- 9 files changed, 3 insertions(+), 517 deletions(-) delete mode 100644 Tablegen/DataCruncher.py delete mode 100644 Tablegen/LaTeXPublication.py delete mode 100644 Tablegen/LaTeXTableMaker.py delete mode 100644 Tablegen/MarkdownTableMaker.py delete mode 100644 Tablegen/TableWriter.py delete mode 100644 Tablegen/__init__.py diff --git a/Tablegen/DataCruncher.py b/Tablegen/DataCruncher.py deleted file mode 100644 index 9d85bc5..0000000 --- a/Tablegen/DataCruncher.py +++ /dev/null @@ -1,121 +0,0 @@ -#! /usr/bin/python - -import sys -import os -from collections import defaultdict - -class data_cruncher(object): - """docstring for data_cruncher. Reads in data and stores it in a table format.""" - - def __init__(self): - self.experiment_list = defaultdict(lambda : defaultdict(list)) - self.rows = [] - - def __repr__(self): - string = "DataCruncher : " - for item in self.experiment_list: - string += "<{} : {}>\n".format(item, str(self.experiment_list[item])) - return string - - def __str__(self): - string = "DataCruncher : " - for item in self.experiment_list: - string += "<{} : {}>\n".format(item, str(self.experiment_list[item])) - return string - - @staticmethod - def all_same(data_array): - first_element = 1 - first = 1 - for i in data_array: - if first == 1: - first_element = i - first = 0 - if first_element != i: - return False - return True - - @staticmethod - def all_different(data_array): - value_hash=set() - for i in data_array: - value_hash.add(i) - return len(value_hash) == len(data_array) - - @staticmethod - def same_element_count(hash_list): - count = 0 - first_key = 1 - for key in hash_list.keys(): - if first_key == 1: - first_key = 0 - count = len(hash_list[key]) - if count != len(hash_list[key]): - return False - return True - - @staticmethod - def read_in_data(file_name): - temp_file = open(file_name, 'r') - hash_list = defaultdict(list) - - for line in temp_file: - if line.startswith("#") or line.startswith("best") or len(line) == 0: - continue - key_value_pair = line.split(":") - key = key_value_pair[0].strip() - value = key_value_pair[1].strip() - hash_list[key].append(value) - return hash_list - - @staticmethod - def get_keys(hash_list, lst): - temp_list = [] - for key in lst: - if type(key) == int: - temp_list.append(int(hash_list[key][0])) - else: - temp_list.append(hash_list[key][0]) - return tuple(temp_list) - - def get_rows(self): - return self.rows - - def get_data(self, key): - return self.experiment_list[key] - - def update_table(self, hash_list, keys): - if keys not in self.experiment_list: - self.rows.append(keys) - self.experiment_list[keys] = hash_list - else: - for key in hash_list: - self.experiment_list[keys][key].append(hash_list[key][0]) - - def process_file(self, data_file, keys_list): - hash_list = data_cruncher.read_in_data(data_file) - keys = data_cruncher.get_keys(hash_list, keys_list) - self.update_table(hash_list, keys) - - def process_dir(self, data_dir, keys_list): - os.chdir(data_dir) - for data_file in os.listdir('.'): - if str(data_file).startswith("log"): - self.process_file(data_file, keys_list) - self.rows.sort() - - def validate_data(self, same_keys_list, different_keys_list): - for key in self.experiment_list: - for i in same_keys_list: - if not data_cruncher.all_same(self.experiment_list[key][i]): - print "ERROR! different " + i - sys.exit(1) - - for i in different_keys_list: - if not data_cruncher.all_different(self.experiment_list[key][i]): - print "ERROR! duplicate " + i - sys.exit(1) - - if not data_cruncher.same_element_count(self.experiment_list[key]): - print "ERROR! not all runs have same number of statistics" - sys.exit(1) diff --git a/Tablegen/LaTeXPublication.py b/Tablegen/LaTeXPublication.py deleted file mode 100644 index 7ea2108..0000000 --- a/Tablegen/LaTeXPublication.py +++ /dev/null @@ -1,73 +0,0 @@ -#! /usr/bin/python - -import subprocess -from LaTeXTableMaker import latex_tablemaker - -class latex_publication(latex_tablemaker): - """docstring for latex_publication.""" - def __init__(self, experiment_name): - #super(latex_publication, self).__init__(experiment_name) - self.file_name = experiment_name+".tex" - doc_type = "[11pt]{article}\n" - self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs"] - self.table = open(self.file_name, 'w') - self.table.write("\\documentclass" + doc_type) - - def begin(self, columns_list, heads, caption): - padding = "18pt" - string = "\\begin{document}\n" - string += "\\begin{table}\n" - string += "\\maketitle\n" - string += "\\begin{center}\n" - string += "\\caption{{{}}}\n".format(caption) - string += "\\scriptsize\n" - string += "\\setlength{\\tabcolsep}{.9ex}\n" - string += "\\begin{tabular}[tb]" - counter = 0 - temp = "" - for head in heads: - temp_str = "\\hskip {}".format(padding) - temp_str = "@{{{}}} ".format(temp_str) - key_str = "" - for i in range(head[1]): - key_str +=latex_tablemaker.align(columns_list[counter+i]) - temp_str = key_str + temp_str - counter += head[1] - temp += temp_str - temp = temp[:temp.rfind("@")] - string += "{{{}}} \n". format(temp) - string += "\\toprule\n" - self.table.write(string) - - def column_names(self, names, heads, columns_list): - temp_str = "\\multicolumn{{{}}}{{{}}}{{{}}} &" - end_str = "\\\\ \n" - string = "" - center = "c" - for i in range(len(heads)): - string += temp_str.format(heads[i][1], center, heads[i][0]) - - string = string[:-2] - string += end_str - - for i in range(len(names)): - string += temp_str.format(1, center, names[i]) - - string = string[:-2] - string += end_str - temp = "\\cmidrule({}){{{}-{}}}" - for i in range(len(columns_list)): - string += temp.format(latex_tablemaker.align(columns_list[i]), i+1, i+1) - string += end_str - self.table.write(string) - - - def footer(self): - string = "\\hline" - string += "\\end{tabular}\n" - string += "\\end{center}\n" - string += "\\end{table}\n" - string += "\\end{document}\n" - self.table.write(string) - self.table.close() - subprocess.Popen(["pdflatex", self.file_name]) diff --git a/Tablegen/LaTeXTableMaker.py b/Tablegen/LaTeXTableMaker.py deleted file mode 100644 index abd37a0..0000000 --- a/Tablegen/LaTeXTableMaker.py +++ /dev/null @@ -1,102 +0,0 @@ -#! /usr/bin/python - -import subprocess - -class latex_tablemaker(object): - """docstring for latex_self.tablemaker.""" - - def __init__(self, experiment_name): - self.file_name = experiment_name+".tex" - doc_type = "journal" - self.default_packages = ["longtable", "amsmath", "fullpage", "pdflscape", "booktabs", "numprint"] - #TODO numprint package, textbf - self.table = open(self.file_name, 'w') - self.table.write("\\documentclass{{{}}}\n".format(doc_type)) - - def add_packages(self, lst=[]): - lst += self.default_packages - packages = "\\usepackage[table]{xcolor}\n" - string = "\\usepackage{{{}}}\n" - for item in lst: - packages += string.format(item) - self.table.write(packages) - - def set_title(self, title): - self.table.write("\\title{{{}}}\n".format(title)) - - def set_author(self, author): - self.table.write("\\author{{{}}}\n".format(author)) - - @staticmethod - def align(key): - right = "r" - left = "l" - if latex_tablemaker.is_float(key): - return right - else: - return left - - def begin(self, columns_list, heads, caption): - orientation = "landscape" - - string = "\\begin{document}\n" - string += "\\rowcolors{2}{gray!25}{white}\n" - string += "\\begin{{{}}}\n".format(orientation) - string += "\\maketitle\n" - string += "\\begin{center}\n" - string += "\\begin{longtable}[!t]" - key_alignment = "" - for key in columns_list: - key_alignment += latex_tablemaker.align(key) + "|" - key_alignment[:-1] - string += "{{{}}}\n".format(key_alignment) - self.table.write(string) - - def column_names(self, names, heads, columns_list): - temp_str = "\\multicolumn{{{}}}{{{}}}{{{}}} &\n" - end_str = "\\\\ \\hline\n" - string = "" - for i in range(len(heads)): - string += temp_str.format(heads[i][1], "c", heads[i][0]) - - string = string[:-2] - string += end_str - - for i in range(len(names)): - if i == 0: - string += "{{{}}} &\n".format(names[0]) - else: - string += temp_str.format(1, latex_tablemaker.align(columns_list[i]),names[i]) - - string = string[:-2] - string += end_str - self.table.write(string) - - def print_name(self, length, name): - string = "\\multicolumn{{{}}}{{{}}}{{{}}} \\\\ \n" - string = string.format(length, "l", "\\textbf{{{}}}".format(name)) - self.table.write(string) - - def print_row(self,reduced_array, idx): - #TODO validate number of columns - if idx is not None: - reduced_array[idx] = "\\textbf{{{}}}".format(reduced_array[idx]) - self.table.write(" & ".join(reduced_array) + " \\\\\n") - - def footer(self): - orientation = "landscape" - string = "\\end{center}\n" - string += "\\end{longtable}\n" - string += "\\end{{{}}}\n".format(orientation) - string += "\\end{document}\n" - self.table.write(string) - self.table.close() - subprocess.Popen(["pdflatex", self.file_name]) - - @staticmethod - def is_float(string): - try: - float(string) - return True - except ValueError: - return False diff --git a/Tablegen/MarkdownTableMaker.py b/Tablegen/MarkdownTableMaker.py deleted file mode 100644 index 3c3b548..0000000 --- a/Tablegen/MarkdownTableMaker.py +++ /dev/null @@ -1,71 +0,0 @@ -#! /usr/bin/python - -class markdown_tablemaker(object): - """docstring for MarkdownTableMaker.""" - def __init__(self, experiment_name): - self.file_name = experiment_name+".md" - self.table = open(self.file_name, "w") - self.newline = " \n" - - def add_packages(self, lst=[]): - pass - - def set_title(self, title): - string = "## {}".format(title) + self.newline - self.table.write(string) - - def set_author(self, author): - string = "### *{}*".format(author) + self.newline - self.table.write(string) - - def align(self, key): - right = ":" - left = "" - if markdown_tablemaker.is_float(key): - return right - else: - return left - - def begin(self, columns_list, heads, caption): - self.table.write(caption) - - def column_names(self, names, heads, columns_list): - string = "" - hyphen = "---" - #TODO support for colspan -# for head in heads: -# string += head[0] + "|"*head[1] -# string = string + self.newline -# for i in range(len(heads)): -# string += ":" + hyphen + ": | " -# string = string[:-2] + self.newline - - for name in names: - string += name + " | " - string = string[:-2] + self.newline - for i in range(len(names)): - string += hyphen +self.align(columns_list[i]) + " | " - string = string[:-2] + self.newline - self.table.write(string) - - def print_name(self, name): - self.table.write(name) #TODO support for colspan - - def print_row(self,reduced_array): - string = "" - for item in reduced_array: - string += item + " | " - string = string [:-2] + self.newline - self.table.write(string) - - def footer(self): - self.table.write(self.newline) - self.table.close() - - @staticmethod - def is_float(string): - try: - float(string) - return True - except ValueError: - return False diff --git a/Tablegen/TableWriter.py b/Tablegen/TableWriter.py deleted file mode 100644 index c518381..0000000 --- a/Tablegen/TableWriter.py +++ /dev/null @@ -1,142 +0,0 @@ -#! /usr/bin/python - -import sys -from collections import defaultdict -from Tablegen import * - -class table_writer(object): - """docstring for table_writer.""" - - def __init__(self): - self.experiment_list = defaultdict(data_cruncher) - self.output = None - self.names = [] #identify different subtables in an experiment - self.sub_headers = [] #displayed names for the subtables - - def __repr__(self): - string = "
2: - operation = col[2].strip() - else: - operation = "none" - if len(col) > 3: - string_format = col[3].strip() - else: - string_format = "none" - - data = table_writer.data_operation(hash_list, data, operation) - data = table_writer.format_data(data, string_format) - data = table_writer.convert_type(data, data_type) - temp_array.append(data) - - return temp_array - - @staticmethod - def data_operation(hash_list, keyword, operation): - if operation == "average": - return table_writer.get_avg(hash_list, keyword) - elif operation == "maximum": - return table_writer.get_max(hash_list, keyword) - else: - return hash_list[keyword][0] - - @staticmethod - def format_data(string, string_format): - if type(string) == "int": - string_format = "none" - elif table_writer.is_float(string): - string = float(string) - if string_format == "none" and table_writer.is_float(string): - string_format = "{0:.2f}" - if string_format != "none": - string = string_format.format(string) - return string - - @staticmethod - def convert_type(data, data_type): - if data_type == "int" and table_writer.is_float(data): - data = str(int(float(data))) - return data - - @staticmethod - def is_float(string): - try: - float(string) - return True - except ValueError: - return False - - @staticmethod - def get_avg(hash_list, value): - #strip is for time calculations - return sum([float(x.strip("s")) for x in hash_list[value]])/len(hash_list[value]) - - @staticmethod - def get_max(hash_list, value): - return max([float(x) for x in hash_list[value]]) - - @staticmethod - def output_format(table_format, experiment_name): - if table_format == "latex": - output = latex_tablemaker(experiment_name) - elif table_format == "markdown": - output = markdown_tablemaker(experiment_name) - elif table_format == "latex_publication": - output = latex_publication(experiment_name) - return output - - @staticmethod - def compare_columns(hash_list, lst=[]): - if(len(lst) < 3): - return - temp = [] - for i in lst[1:]: - temp.append(float(hash_list[i])) - if lst[0] == "max": - idx = temp.index(max(temp)) - elif lst[0] == "min": - idx = temp.index(min(temp)) - return lst[idx+1] - - def add_experiment(self, experiment, experiment_name, sub_header=""): - self.experiment_list[experiment_name] = experiment - self.names.append(experiment_name) - self.sub_headers.append(sub_header) - - def initialize(self, experiment_name, table_format, title, author, packages=[]): - self.output = table_writer.output_format(table_format, experiment_name) - self.output.add_packages(packages) - self.output.set_title(title) - self.output.set_author(author) - - def write_sub_table(self, name, table, columns_list, compare_cols): - rows = table.get_rows() - if(len(self.experiment_list) > 1): - self.output.print_name(len(table.get_data(rows[0])), name) - for row in rows: - reduced_array = list(row) - reduced_array += table_writer.one_row(table.get_data(row), columns_list) - idx = table_writer.compare_columns(reduced_array, compare_cols) - self.output.print_row(reduced_array, idx) - - def write_table(self, column_names, column_heads, columns_list, compare_cols=[], caption=""): - rows = self.experiment_list[self.names[0]].get_rows() - example = list(rows[0]) - example += table_writer.one_row(self.experiment_list[self.names[0]].get_data(rows[0]), columns_list) #template for aligning the output - self.output.begin(example, column_heads, caption) - self.output.column_names(column_names, column_heads, example) - for i in range(len(self.names)): - self.write_sub_table(self.sub_headers[i], self.experiment_list[self.names[i]], columns_list, compare_cols) - - self.output.footer() diff --git a/Tablegen/__init__.py b/Tablegen/__init__.py deleted file mode 100644 index 58dadc3..0000000 --- a/Tablegen/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from LaTeXTableMaker import latex_tablemaker -from MarkdownTableMaker import markdown_tablemaker -from LaTeXPublication import latex_publication -from DataCruncher import data_cruncher -from TableWriter import table_writer diff --git a/experiments/erdos-biogrid/tablegen.py b/experiments/erdos-biogrid/tablegen.py index 9d21f09..3f6299f 100644 --- a/experiments/erdos-biogrid/tablegen.py +++ b/experiments/erdos-biogrid/tablegen.py @@ -3,7 +3,7 @@ import sys import os sys.path.append("../../") -from Tablegen import * +from table_gen import * same_keys_list = [] different_keys_list = [] diff --git a/experiments/large-networks/tablegen.py b/experiments/large-networks/tablegen.py index 09b19ab..8f9f296 100644 --- a/experiments/large-networks/tablegen.py +++ b/experiments/large-networks/tablegen.py @@ -3,7 +3,7 @@ import sys import os sys.path.append("../../") -from Tablegen import * +from table_gen import * same_keys_list = [] different_keys_list = [] diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index d9b92a7..fd00d40 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -3,7 +3,7 @@ import sys import os sys.path.append("../../") -from Tablegen import * +from table_gen import * same_keys_list = [] different_keys_list = [] From 378079c3545515a8045db1a0120954deb6e4760c Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 14 Sep 2017 13:10:21 -0400 Subject: [PATCH 15/20] Minor changes --- experiments/erdos-biogrid/tablegen.py | 1 - experiments/large-networks/tablegen.py | 1 - experiments/sanchis/tablegen.py | 1 - 3 files changed, 3 deletions(-) diff --git a/experiments/erdos-biogrid/tablegen.py b/experiments/erdos-biogrid/tablegen.py index 3f6299f..b0eebdc 100644 --- a/experiments/erdos-biogrid/tablegen.py +++ b/experiments/erdos-biogrid/tablegen.py @@ -2,7 +2,6 @@ import sys import os -sys.path.append("../../") from table_gen import * same_keys_list = [] diff --git a/experiments/large-networks/tablegen.py b/experiments/large-networks/tablegen.py index 8f9f296..53c0cc2 100644 --- a/experiments/large-networks/tablegen.py +++ b/experiments/large-networks/tablegen.py @@ -2,7 +2,6 @@ import sys import os -sys.path.append("../../") from table_gen import * same_keys_list = [] diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index fd00d40..20dd09f 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -2,7 +2,6 @@ import sys import os -sys.path.append("../../") from table_gen import * same_keys_list = [] From e9377ef7fb50fcf445913c787bf272e00d0cd347 Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 21 Sep 2017 23:25:11 -0400 Subject: [PATCH 16/20] tablegen --- experiments/sanchis/tablegen.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 20dd09f..e6b32cc 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -15,7 +15,7 @@ #column_heads = [] #empty for non publication table column_names = ["n", "m", "q(G)", "k", "t","t-avg", "k", "t","t-avg", "k", "t", "t-avg"] #start with names for each key in keys_list -compare_cols = ["min", 4, 7, 10] #highlight max or min, zero-indexed count in column_names +compare_cols = ["min", 3, 6, 9] #highlight max or min, zero-indexed count in column_names experiment_name = "Sanchis" experiments = ["sanchis"] sub_headers = [] #subheadings for each experiment From f4e9c846620391e3d72ba65e2bb533c01ba22746 Mon Sep 17 00:00:00 2001 From: Daniel Date: Fri, 22 Sep 2017 21:27:40 -0400 Subject: [PATCH 17/20] Minor update --- experiments/sanchis/tablegen.py | 1 - 1 file changed, 1 deletion(-) diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index e6b32cc..1527146 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -1,6 +1,5 @@ #! /usr/bin/python -import sys import os from table_gen import * From 993f8c0d3bca144abfdbed2394a3249544736e5e Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 23 Sep 2017 12:09:11 -0400 Subject: [PATCH 18/20] tablegen --- experiments/erdos-biogrid/tablegen.py | 1 - 1 file changed, 1 deletion(-) diff --git a/experiments/erdos-biogrid/tablegen.py b/experiments/erdos-biogrid/tablegen.py index b0eebdc..5207b1b 100644 --- a/experiments/erdos-biogrid/tablegen.py +++ b/experiments/erdos-biogrid/tablegen.py @@ -1,6 +1,5 @@ #! /usr/bin/python -import sys import os from table_gen import * From c752c3c5dcfaa3a5c0965e6323e8b4a86807f844 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 24 Sep 2017 23:38:10 -0400 Subject: [PATCH 19/20] Minor fix --- experiments/erdos-biogrid/tablegen.py | 6 ++---- experiments/large-networks/tablegen.py | 5 +---- experiments/sanchis/tablegen.py | 6 ++---- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/experiments/erdos-biogrid/tablegen.py b/experiments/erdos-biogrid/tablegen.py index 5207b1b..3e4aa15 100644 --- a/experiments/erdos-biogrid/tablegen.py +++ b/experiments/erdos-biogrid/tablegen.py @@ -1,6 +1,5 @@ #! /usr/bin/python -import os from table_gen import * same_keys_list = [] @@ -18,14 +17,13 @@ experiment_name = "Erdos-BioGRID" experiments = ["erdos", "biogrid"] sub_headers = ["Erdos Graphs", "BioGRID Graphs"] -table_format = "latex_publication" #latex, latex_publication, markdown +table_format = "latex" #latex, latex_publication, markdown caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." -data_dir = os.getcwd() table = table_writer() table.initialize(experiment_name, table_format, title, author) #packages-optional last argument for i in range(len(experiments)): - temp_dir = data_dir + "/" + experiments[i] + temp_dir = experiments[i] + '/' exp = data_cruncher() exp.process_dir(temp_dir, keys_list) exp.validate_data(same_keys_list, different_keys_list) diff --git a/experiments/large-networks/tablegen.py b/experiments/large-networks/tablegen.py index 53c0cc2..08be530 100644 --- a/experiments/large-networks/tablegen.py +++ b/experiments/large-networks/tablegen.py @@ -1,7 +1,5 @@ #! /usr/bin/python -import sys -import os from table_gen import * same_keys_list = [] @@ -22,11 +20,10 @@ table_format = "latex_publication" #latex, latex_publication, markdown caption = "We give the size kmax of largest connected component in the kernel from each reduction technique and the running time t of each algorithm to compute an exact maximum independent set. We further give the number of vertices n and edges m for each graph." -data_dir = os.getcwd() table = table_writer() table.initialize(experiment_name, table_format, title, author) #packages-optional last argument for i in range(len(experiments)): - temp_dir = data_dir + "/" + experiments[i] + temp_dir = experiments[i] + '/' exp = data_cruncher() exp.process_dir(temp_dir, keys_list) exp.validate_data(same_keys_list, different_keys_list) diff --git a/experiments/sanchis/tablegen.py b/experiments/sanchis/tablegen.py index 1527146..4a7e668 100755 --- a/experiments/sanchis/tablegen.py +++ b/experiments/sanchis/tablegen.py @@ -1,6 +1,5 @@ #! /usr/bin/python -import os from table_gen import * same_keys_list = [] @@ -18,14 +17,13 @@ experiment_name = "Sanchis" experiments = ["sanchis"] sub_headers = [] #subheadings for each experiment -table_format = "latex_publication" #latex, latex_publication, markdown +table_format = "latex" #latex, latex_publication, markdown caption = "We give the kernel size k and running time t for each reduction technique on synthetically- generated Sanchis data sets. We also list the data used to generate the graphs: the number of vertices n, number of edges m, and independence number q(G)." -data_dir = os.getcwd() table = table_writer() table.initialize(experiment_name, table_format, title, author) #packages-optional last argument for i in range(len(experiments)): - temp_dir = data_dir + "/" + experiments[i] + temp_dir = experiments[i]+ "/" exp = data_cruncher() exp.process_dir(temp_dir, keys_list) exp.validate_data(same_keys_list, different_keys_list) From 73d1943ebb3743e4a97f10be61163d7d29083b77 Mon Sep 17 00:00:00 2001 From: Daniel Gathogo Date: Tue, 31 Oct 2017 21:43:51 -0400 Subject: [PATCH 20/20] Bug fix --- experiments/assets/footer.document | 1 - experiments/assets/header.document | 19 ------------------- .../erdos-biogrid/experiment.erdos-biogrid.sh | 2 +- experiments/sanchis/experiment.sanchis.sh | 4 ++-- 4 files changed, 3 insertions(+), 23 deletions(-) delete mode 100644 experiments/assets/footer.document delete mode 100644 experiments/assets/header.document diff --git a/experiments/assets/footer.document b/experiments/assets/footer.document deleted file mode 100644 index 6b47932..0000000 --- a/experiments/assets/footer.document +++ /dev/null @@ -1 +0,0 @@ -\end{document} diff --git a/experiments/assets/header.document b/experiments/assets/header.document deleted file mode 100644 index f2bc823..0000000 --- a/experiments/assets/header.document +++ /dev/null @@ -1,19 +0,0 @@ -\documentclass[11pt]{article} - -\usepackage{amssymb,amsfonts,amsmath} -\usepackage{fullpage} -\usepackage{booktabs} - -\usepackage{numprint} -\npdecimalsign{.} % we want . not , in numbers - -\newcommand{\AlgName}[1]{\ensuremath{\text{{\sf #1}}}} -\newcommand{\advanced}{\AlgName{Advanced}} -\newcommand{\simple}{\AlgName{Simple}} -\newcommand{\critical}{\AlgName{Critical}} -\newcommand{\maxcritical}{\AlgName{MaxCritical}} -\newcommand{\ai}{\AlgName{B\&R}} -\newcommand{\mcs}{\AlgName{MCS}} - - -\begin{document} diff --git a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh index aaa1c3a..8db02c7 100755 --- a/experiments/erdos-biogrid/experiment.erdos-biogrid.sh +++ b/experiments/erdos-biogrid/experiment.erdos-biogrid.sh @@ -4,7 +4,7 @@ time_out=3600 seeds=5 seeds_minus_one=$((seeds - 1)) -data_dir=../../data_2 +data_dir=../../data script_dir=../../scripts experiments=(erdos biogrid) diff --git a/experiments/sanchis/experiment.sanchis.sh b/experiments/sanchis/experiment.sanchis.sh index 303af84..3448091 100755 --- a/experiments/sanchis/experiment.sanchis.sh +++ b/experiments/sanchis/experiment.sanchis.sh @@ -4,9 +4,9 @@ time_out=3600 seeds=5 seeds_minus_one=$((seeds - 1)) -output_dir=sanchis.$time_out +output_dir=sanchis -data_dir=../../data_2/ +data_dir=../../data script_dir=../../scripts/ sanchis_data_set=$data_dir/sanchis