#!/bin/bash n_proc=1 # Number of processes to execute in parallel, -1 unlimited pre_cluster=0 # Use COP-KMeans to initialise the clustering trap "trap - SIGTERM && kill -- -$$ && exit" SIGINT SIGTERM EXIT function limitjobs { if [ "${n_proc}" != "-1" ] then while [ `jobs -rp | wc -l` -ge ${n_proc} ] do sleep 5 done fi } subdir=Babaki14 data_path=./datasets test_type=test COPKMeansBaseDir=`pwd`/methods/Babaki14/bin/COP-KMeans COPKMeansDir=${COPKMeansBaseDir}/copkmeans outdir=./methods/${subdir}/clusterings/unconstrained resdir=./results/${subdir}/unconstrained mkdir -p ${resdir} mkdir -p ${outdir} for d in ${data_path}/*/ do dataname=`basename ${d}` echo ${dataname} distancemetricfilename=${data_path}/${dataname}/${test_type}/${dataname}.metric distance_metric=`cat ${distancemetricfilename}` nfeaturesfilename=${data_path}/${dataname}/${test_type}/${dataname}.nfeatures nfeatures=`cat ${nfeaturesfilename}` distancefilename=${data_path}/${dataname}/${test_type}/${dataname}.distances datafilename=${data_path}/${dataname}/${test_type}/${dataname}.data kfilename=${data_path}/${dataname}/${test_type}/${dataname}.k labelsfilename=${data_path}/${dataname}/${test_type}/${dataname}.labels kvalue=`cat ${kfilename}` resultdir=./methods/${subdir}/results/${test_type}/unconstrained mkdir -p ${resultdir} for (( i=1; i<=10; i++ )) do limitjobs { cnstrnt_frac=0 cnstrnt_iter=${i} filenamepattern=${dataname}_${test_type}_${cnstrnt_frac}_${cnstrnt_iter} outfilename=${outdir}/${filenamepattern}.clustering resultfilename=${resultdir}/${filenamepattern}.results initialclusterfilename=${COPKMeansBaseDir}/clusterings/unconstrained/${filenamepattern}.clustering if [ ! -f ${resultfilename} ] then echo ${resultfilename} rm -f ${outfilename} if [ "${pre_cluster}" == "1" ] then python methods/${subdir}/bin/cccg-seed.py -d ${datafilename} -k ${kvalue} -c 1 -t 9999999 -copdir ${COPKMeansDir} -f ${nfeatures} -p ${distance_metric} --ofile=${outfilename} --distfile=${distancefilename} --l=1 #--init=${initialclusterfilename} else python methods/${subdir}/bin/cccg-seed.py -d ${datafilename} -k ${kvalue} --consfile=${constraintsfilename} -c 1 -t 9999999 -copdir ${COPKMeansDir} -f ${nfeatures} -p ${distance_metric} --ofile=${outfilename} --distfile=${distancefilename} --l=1 --init=-1 fi if [ -f ${outfilename} ] then Rscript --vanilla ./utils/cluster_index.R ${labelsfilename} ${outfilename} ${resultfilename} fi fi } & done wait for cnstrnt_frac in 0 do outfilename=${resdir}/${dataname}_${test_type}_${cnstrnt_frac}.results rm -f ${outfilename} Rscript --vanilla ./utils/summarise_results.R ${resultdir} ${dataname} ${test_type} ${cnstrnt_frac} ${outfilename} done done