示例#1
0
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
示例#2
0
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
示例#3
0
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)