def runArmatus(filepath, maxscale, outprefix, armaoutfolder, ARMATUSPATH, stepsize=0.05, topcount=1): """Runs Armatus Args: filepath: maxscale: outprefix: armaoutfolder: ARMATUSPATH: topcount: suboptimal solution count Returns: alldomains: """ intersect = lambda (s1, e1), (s2, e2): False if (e1 < s2 or e2 < s1 ) else True if not os.path.exists(armaoutfolder): os.makedirs(armaoutfolder) code = "{0}/armatus -i {1} -g {2} -o {3}/{4} -k {5} -s {6} -m".format( ARMATUSPATH, filepath, maxscale, armaoutfolder, outprefix, topcount, stepsize) os.system(code) scale2doms = {} outpaths = [ "{0}/{1}".format(armaoutfolder, tarmaoutfile) for tarmaoutfile in myutil.listfiles(armaoutfolder) if tarmaoutfile.find("gamma") != -1 ] for outpath in outpaths: domains = readArmatusOut(outpath) scale = float(".".join( outpath.split(outprefix + ".gamma.")[-1].split(".")[0:2])) scale2doms.setdefault(scale, set()) scale2doms[scale] |= set(domains) for dom1, dom2 in itertools.combinations(list(domains), 2): assert not intersect(dom1, dom2) os.system("rm -rf {0}".format(armaoutfolder)) for scale in scale2doms.keys(): for dom1, dom2 in itertools.combinations(list(scale2doms[scale]), 2): assert dom1 != dom2 return scale2doms
def runArmatusAsMethod(filepath, maxscale, outprefix, armaoutfolder, ARMATUSPATH, compcount): """Runs Armatus as method Args: filepath: maxscale: outprefix: armaoutfolder: ARMATUSPATH: compcount: suboptimal solution count Returns: alldomains: """ intersect = lambda (s1, e1), (s2, e2): False if (e1 < s2 or e2 < s1 ) else True if not os.path.exists(armaoutfolder): os.makedirs(armaoutfolder) code = "{0}/armatus -i {1} -g {2} -o {3}/{4} -k {5} -m".format( ARMATUSPATH, filepath, maxscale, armaoutfolder, outprefix, compcount) os.system(code) outpaths = [ "{0}/{1}".format(armaoutfolder, tarmaoutfile) for tarmaoutfile in myutil.listfiles(armaoutfolder) if tarmaoutfile.find("gamma") != -1 ] scale2comp2doms = {} for outpath in outpaths: domains = readArmatusOut(outpath) scale = float(".".join( outpath.split(outprefix + ".gamma.")[-1].split(".")[0:2])) comp = int(outpath.split(outprefix + ".gamma.")[-1].split(".")[2]) scale2comp2doms.setdefault(scale, {}) scale2comp2doms[scale][comp] = set(domains) os.system("rm -rf {0}".format(armaoutfolder)) #for scale in sorted(scale2comp2doms.keys()): # print scale # for comp in scale2comp2doms[scale].keys(): # print comp,scale2comp2doms[scale][comp] # for dom1,dom2 in itertools.combinations(list(scale2comp2doms[scale][comp]),2): # assert dom1 != dom2 #print scale2comp2doms.keys() return scale2comp2doms
import os import sys sys.path.append("./lib") import myutilities as myutil if False: index = 0 datafolder = "results_real" for paramstr in myutil.listdirectories(datafolder): dir1 = "{0}/{1}".format(datafolder, paramstr) print index, paramstr index += 1 for noise in myutil.listdirectories(dir1): dir2 = "{0}/{1}".format(dir1, noise) fnames = myutil.listfiles(dir2) for fname in fnames: splitted = fname.split("-") if len(splitted) == 5: parts = splitted[4].split("_") for part in parts: assert part not in ["True", "False"] continue assert len(splitted) == 4 parts = splitted[3].split("_") assert parts[-3] in ["True", "False"] if parts[-3] == "True": splitted.insert(3, 'binary') elif parts[-3] == "False": splitted.insert(3, 'integer') assert len(parts) in [5, 7] parts.pop(-3)