Пример #1
0
def funcSharedFunction():
    shared.setConst(myRemoteFunc=func4)
    result = True
    for _ in range(100):
        try:
            result &= futures.submit(funcUseSharedFunction).result()
        except AssertionError:
            result = False
    return result
Пример #2
0
def initialize(wd, rxns):
    global working_dir, reactions
    working_dir = wd
    assert os.path.isdir(working_dir)

    #set global variable here such that functions executed in the root worker have access to it.
    reactions = rxns
    reduce_reactions = [ReductionReaction(rxn) for rxn in rxns]
    shared.setConst(reactions=reduce_reactions)
Пример #3
0
def funcSharedFunction():
    shared.setConst(myRemoteFunc=func4)
    result = True
    for _ in range(100):
        try:
            result &= futures.submit(funcUseSharedFunction).result()
        except AssertionError:
            result = False
    return result
Пример #4
0
def initialize(wd, rxns):
    global working_dir, reactions
    working_dir = wd
    assert os.path.isdir(working_dir)
    
    #set global variable here such that functions executed in the root worker have access to it.
    reactions = rxns
    reduce_reactions = [ReductionReaction(rxn) for rxn in rxns]
    shared.setConst(reactions = reduce_reactions)
Пример #5
0
def funcSharedConstant():
    shared.setConst(myVar={1: 'Example 1',
                                2: 'Example 2',
                                3: 'Example 3',
                               })
    shared.setConst(secondVar="Hello World!")
    result = True
    for _ in range(100):
        try:
            result &= futures.submit(funcUseSharedConstant).result()
        except AssertionError:
            result = False
    return result
Пример #6
0
def funcSharedConstant():
    shared.setConst(myVar={1: 'Example 1',
                                2: 'Example 2',
                                3: 'Example 3',
                               })
    shared.setConst(secondVar="Hello World!")
    result = True
    for _ in range(100):
        try:
            result &= futures.submit(funcUseSharedConstant).result()
        except AssertionError:
            result = False
    return result
Пример #7
0
def funcUseDeletedSharedConstant():
    # Tries to retrieve a deleted variable, should timeout
    shared.deleteConst('myVar')
    shared.deleteConst('secondVar')
    timeout = 0.01
    assert shared.getConst('myVar', timeout=timeout) is None
    assert shared.getConst('secondVar', timeout=timeout) is None
    try:
        # You should not be able to reset a deleted variable
        shared.setConst(myVar=42)
        return False
    except TypeError:
        pass
    return True
Пример #8
0
def simulate(config):
    config_data = json.load(config)
    config.close()
    config = config_data
    
    output_formatter = config["output_formatter"]
    subs = {a:b for a,b in config.get("range_substitutions", [["Z",{"min":0,"max":0.5,"step":1}]])}
    range_constraints = [eval("lambda {}:{}".format(",".join(subs.keys()),con)) for con in config["range_constraints"]]
    def switch_weighter(vector):
        return lambda x,i,j: x if vector[j] is None else vector[j].pop() if x else 0
    switch = config['switch']
    write_delay = config.get("write_delay",10)
    
    V = {}
    V['choice'] = matrix_map(config['choice'],lambda x,i,j:parse_expr(str(x)))
    V['i_ip'] = int(config['power_iterations']["super_iterations"])
    V['i_i'] = int(config['power_iterations']["iterations"])
    V['iterations'] = int(config['iterations'])
    if "starting_points" in config:
        origional_pops = [[a/sum(s) if sum(s)>0 else 1.0/len(s) for a in s] for s in config['starting_points']]
        V['origional_pops'] = [numpy.matrix([a]).transpose() for a in origional_pops]
    else:
        V['origional_pops'] = [numpy.matrix([[1.0/len(V['choice'])] for s in range(len(V['choice']))])]
    V['extrema'] = [numpy.matrix(matrix_map(switch,switch_weighter(e))) for e in generate_switch_extrema(switch)]
    V['pop_symbols'] = [sympy.symbols("s{}".format(i)) for i in range(len(V['choice']))]
    V['subs_symbols'] = {a:symbols(a) for a,b in subs.iteritems()}
    V['sequence'] = config.get('sequence',"1.0/(x+2)")
    V['weight_function'] = config['weight_function']
    shared.setConst(V=V)
    
    output_json = []
    
    big_list = [a for a in multi_iterate(subs) if False not in [con(**a) for con in range_constraints]]
    progress = tqdm(total=len(big_list))
    last_write_time = time()
    def output_file(output_json):
        out_file = file(output_formatter, "w")
        out_file.write(json.dumps({"output":output_json},sort_keys=True).replace('{"parameters":','\n{"parameters":'))
        out_file.flush()
        out_file.close()
    for result in futures.map_as_completed(process, big_list):
        output_json.append(result)
        progress.update()
        if time()-last_write_time > write_delay:
            output_file(output_json)
            last_write_time = time()
    output_file(output_json)
    progress.close()
Пример #9
0
def broadcast(obj, key):
    """
    Broadcasts the object across the workers using the key parameter as the key.
    """      
    
    kwargs = {key : obj}
    try:
        if shared.getConst(key):
            logger.debug('An object with the key {} was already broadcasted.'.format(key))
        else:
            shared.setConst(**kwargs)
    except NameError, e:
        """
        Name error will be caught when the SCOOP library is not imported properly.
        """
        logger.debug('SCOOP not loaded. Not broadcasting the object {}'.format(obj))
Пример #10
0
def broadcast(obj, key):
    """
    Broadcasts the object across the workers using the key parameter as the key.
    """      
    
    kwargs = {key : obj}
    try:
        if shared.getConst(key):
            logger.debug('An object with the key {} was already broadcasted.'.format(key))
        else:
            shared.setConst(**kwargs)
    except NameError, e:
        """
        Name error will be caught when the SCOOP library is not imported properly.
        """
        logger.debug('SCOOP not loaded. Not broadcasting the object {}'.format(obj))
Пример #11
0
            if sub:
                s += "<SUB> "+ sub  +" </SUB>\n "
    if article_kwds:
        for kwd in article_kwds:
            if kwd:
                s += "<KWD> "+ kwd  +" </KWD>\n "
    if article_title:
        s += "<ATITLE> "+ article_title  +" </ATITLE>\n "
    if article_abstract:
        s += "<ABSTRACT> "+ article_abstract  +" </ABSTRACT>\n "
    s += "<TEXT> "+ article_contents  +" </TEXT>\n"
    s += "</DOC>\n"

    destination = shared.getConst('destination')
    with codecs.open(destination + "/" + doc_id, encoding="utf-8", mode="w") as f:
        f.write(s)
    return True

if __name__ == "__main__":
    datapath = sys.argv[1] + "*.nxml"
    destination = sys.argv[2]

    print "Datapath: ", datapath

    nxmls = glob.iglob(datapath)
    shared.setConst(destination=destination)

    print "processed: ", len(list(futures.map(process_doc, nxmls)))


Пример #12
0
def main():
    if len(sys.argv)!=4:
        print 'USAGE:'
        print 'python -m scoop devel.py [cloneID] [clusterDir] [outputDir]'
        print 'see devel_config.py'
        return

    cloneID = sys.argv[1]
    clusterDir = sys.argv[2]; assert clusterDir[-1]=='/',"should be ended with '/'"
    baseOutDir = sys.argv[3]; assert baseOutDir[-1]!='/',"should NOT be ended with '/'"

    clfParam = None
    method = cfg['method']
    if method=='esvm':
        from esvm_config import config as clfParam
    elif method=='psvm':
        from psvm_config import config as clfParam
    else:
        print 'FATAL: unknown method'
        return

    outDir = os.path.join(baseOutDir,'devel-'+os.path.basename(baseOutDir))
    if not(os.path.isdir(baseOutDir)): os.makedirs(baseOutDir)
    if not(os.path.isdir(outDir)): os.makedirs(outDir)

    ## Load data ###################################################################################
    dataLog = {}; dataLogFpath = os.path.join(outDir,'data_log_'+os.path.basename(baseOutDir)+'.json')
    dataset = clusterDir.split('/')[-2].split('-')[-1]; dataLog['dataset'] = dataset
    datasetParams = dataset.split('#')
    assert datasetParams[0]=='yamanishi'

    xyDevFpath = os.path.join(baseOutDir,'_'.join(['xdev','ydev','xrel','yrel']+datasetParams)+'.h5')
    if os.path.exists(xyDevFpath):
        print 'loading data from PREVIOUS...'

        with h5py.File(xyDevFpath,'r') as f:
            xdev = f['xdev'][:]
            ydev = f['ydev'][:]
            xrel = f['xrel'][:]
            yrel = f['yrel'][:]
            xrelraw = f['xrelraw'][:]

        with open(dataLogFpath,'r') as f:
            dataLog = yaml.load(f)

    else:
        print 'loading data FRESHLY...'

        print 'loading cluster result...'
        nUnlabels = []
        statFnames = [i for i in os.listdir(clusterDir) if 'labels_stat.json' in i]
        for i in statFnames:
            with open(os.path.join(clusterDir,i),'r') as f: stat = yaml.load(f)
            nUnlabels.append(stat['0'])

        # use the cluster with minimum numbers of unlabeled samples
        metric = '_'.join(statFnames[ nUnlabels.index(min(nUnlabels)) ].split('_')[0:2])
        dataLog['metric'] = metric

        connFpath = os.path.join(clusterDir,metric+'_labels.pkl')
        with open(connFpath,'r') as f:
            data = pickle.load(f)

        ##
        print 'getting devel and release data...'
        xraw = []; yraw = []
        for k,v in data.iteritems():
            for vv in v:
                xraw.append(vv)
                yraw.append(k)

        devIdx = [i for i in range(len(xraw)) if yraw[i]!=0]
        xdev = [xraw[i] for i in devIdx]
        ydev = [yraw[i] for i in devIdx]

        relIdx = [i for i in range(len(xraw)) if yraw[i]==0]
        xrel = [xraw[i] for i in relIdx]
        yrel = [yraw[i] for i in relIdx]

        dataLog['nDevel'] = len(devIdx); dataLog['nData'] = len(yraw)
        dataLog['rDevel:Data'] = dataLog['nDevel']/float(dataLog['nData'])
        dataLog['nDevel(+)'] = len( [i for i in ydev if i==1] ); assert dataLog['nDevel(+)']!=0
        dataLog['nDevel(-)'] = len( [i for i in ydev if i==-1] ); assert dataLog['nDevel(-)']!=0
        dataLog['rDevel(+):Devel'] = float(dataLog['nDevel(+)'])/dataLog['nDevel']
        dataLog['rDevel(-):Devel'] = float(dataLog['nDevel(-)'])/dataLog['nDevel']
        dataLog['rDevel(+):(-)'] = float(dataLog['nDevel(+)'])/float(dataLog['nDevel(-)'])
        dataLog['nRelease'] = len(relIdx);
        dataLog['rRelease:Data'] = dataLog['nRelease']/float(dataLog['nData'])

        ##
        print 'loading com, pro feature...'
        krFpath = os.path.join(cfg['datasetDir'],datasetParams[0],'feature',
                               'klekotaroth','klekotaroth-'+datasetParams[1]+'.h5')
        aacFpath = os.path.join(cfg['datasetDir'],datasetParams[0],'feature',
                                'amino-acid-composition','amino-acid-composition-'+datasetParams[1]+'.h5')

        krDict = {}; aacDict = {}
        with h5py.File(krFpath, 'r') as f:
            for com in [str(i) for i in f.keys()]:
                krDict[com] = f[com][:]
        with h5py.File(aacFpath, 'r') as f:
            for pro in [str(i) for i in f.keys()]:
                aacDict[pro] = f[pro][:]
                # aacDict[pro] = list( fu.map(lambda x: float('%.2f'%(x)),f[pro][:]) ) # rounding

        comFeaLenOri = len(krDict.values()[0])
        proFeaLenOri = len(aacDict.values()[0])

        ##
        msg = 'extract (com,pro) feature... dims: '+str(comFeaLenOri)+','+str(proFeaLenOri)
        msg += ' of '+str(len(ydev))+' and '+str(len(yrel))
        print msg

        sh.setConst(krDict=krDict)
        sh.setConst(aacDict=aacDict)
        xdevf = list( fu.map(cutil.extractComProFea,xdev) )
        xrelf = list( fu.map(cutil.extractComProFea,xrel) )

        ##
        xyDevList = cutil.divideSamples(xdevf,ydev,cfg['smoteBatchSize'])
        if cfg['maxNumberOfSmoteBatch'] != 0:
            xyDevList = xyDevList[0:cfg['maxNumberOfSmoteBatch']]

        smoteSeed = util.seed(); dataLog['smoteSeed'] = smoteSeed
        sh.setConst(smoteSeed=smoteSeed)

        print 'resampling via Smote FRESHLY... '+str(len(xyDevList))+' smote(s)'+' on '+str(len(ydev))
        smoteTic = time.time()

        xdevfr = []; ydevr = []
        xydevfrList = list( fu.map(ensembleSmote,xyDevList) )
        for xdevfri,ydevri in xydevfrList:
            for x in xdevfri: xdevfr.append(x.tolist())
            for y in ydevri: ydevr.append(y)
        assert len(xdevfr)==len(ydevr),'len(xdevfr)!=len(ydevr)'

        dataLog['nSmote'] = len(xyDevList)
        dataLog['nDevelResampled'] = len(ydevr)
        dataLog['rDevelResampled:Data'] = dataLog['nDevelResampled']/float(dataLog['nData'])
        dataLog['nDevelResampled(+)'] = len( [i for i in ydevr if i==1] )
        dataLog['nDevelResampled(-)'] = len( [i for i in ydevr if i==-1] )
        dataLog['rDevelResampled(+):DevelResampled'] = dataLog['nDevelResampled(+)']/float(dataLog['nDevelResampled'])
        dataLog['rDevelResampled(-):DevelResampled'] = dataLog['nDevelResampled(-)']/float(dataLog['nDevelResampled'])
        dataLog['rDevelResampled(+):(-)'] = dataLog['nDevelResampled(+)']/float(dataLog['nDevelResampled(-)'])
        dataLog['timeSMOTE'] =  str(time.time()-smoteTic)

        ##
        print 'update xdev,ydev,xrel... '+str(np.asarray(xdevfr).shape)
        xrelraw = xrel[:] # raw: feature is NOT extracted
        xrel = xrelf[:]
        xdev = xdevfr[:]
        ydev = ydevr[:]

        print 'writing updated xdev,ydev and xrel,yrel...'
        with h5py.File(xyDevFpath,'w') as f:
            f.create_dataset('xdev',data=xdev,dtype=np.float32)
            f.create_dataset('ydev',data=ydev,dtype=np.int8)
            f.create_dataset('xrel',data=xrel,dtype=np.float32)
            f.create_dataset('yrel',data=yrel,dtype=np.int8)
            f.create_dataset('xrelraw',data=xrelraw)

        print 'writing dataLog...'
        dataLog['nCom'] = len(krDict)
        dataLog['nPro'] = len(aacDict)
        with open(dataLogFpath,'w') as f:
            json.dump(dataLog,f,indent=2,sort_keys=True)

    ## TUNE+TRAIN+TEST #############################################################################
    devLog = {}
    devSeed = util.seed(); dataLog['devSeed'] = devSeed
    tag = '_'.join([method+'#'+cloneID,dataset,util.tag()])

    ## split devel dataset
    msg = ' '.join( ['devel',dataset,cloneID])
    xtr,xte,ytr,yte = tts(xdev,ydev,test_size=cfg['testSize'],
                          random_state=devSeed,stratify=ydev)

    if cfg['maxTestingSamples']>0:
        chosenIdx = np.random.randint(len(xte),size=cfg['maxTestingSamples'])
        xte = [xte[i] for i in chosenIdx]; yte = [yte[i] for i in chosenIdx]

    devLog['nTraining'] = len(xtr)
    devLog['nTraining(+)'] = len([i for i in ytr if i==1])
    devLog['nTraining(-)'] = len([i for i in ytr if i==-1])
    devLog['rTraining(+):(-)'] = devLog['nTraining(+)']/float(devLog['nTraining(-)'])
    devLog['rTraining:Devel'] = devLog['nTraining']/float(dataLog['nDevelResampled'])
    devLog['nTesting'] = len(xte)
    devLog['nTesting(+)'] = len([i for i in yte if i==1])
    devLog['nTesting(-)'] = len([i for i in yte if i==-1])
    devLog['rTesting(+):(-)'] = devLog['nTesting(+)']/float(devLog['nTesting(-)'])
    devLog['rTesting:Devel'] = devLog['nTesting']/float(dataLog['nDevelResampled'])

    ## tuning
    clf = None
    if method=='esvm':
        clf  = eSVM(simMat=None)
    elif method=='psvm':
        clf = svm.SVC(kernel=clfParam['kernel'],probability=True)

    ## training
    print msg+': fitting nTr= '+str(len(ytr))
    trTic = time.time()

    if method=='esvm':
        clf.fit(xtr,ytr)
        devLog['labels'] = clf.labels()
        devLog['nSVM'] = clf.nSVM()
        devLog['xtrDimAllBatches'] = clf.xtrDimAllBatches()
    elif method=='psvm':
        if cfg['method']['kernel']=='precomputed':
            assert False
            # simMatTr = cutil.makeComProKernelMatFromSimMat(xtr,xtr,simMat)
            # clf.fit(simMatTr,ytr)
        else:
            clf.fit(xtr,ytr)
        devLog['labels'] = clf.classes_.tolist()
    devLog['timeTraining'] = str(time.time()-trTic)

    ## testing
    print msg+': predicting nTe= '+str(len(yte))
    teTic = time.time()

    if method=='esvm':
        ypred,yscore = clf.predict(xte)
    elif method=='psvm':
        if cfg['method']['kernel']=='precomputed':
            assert False
            # simMatTe = cutil.makeComProKernelMatFromSimMat(xte,xtr,simMat)
            # ypred = clf.predict(simMatTe)
            # yscore = clf.predict_proba(simMatTe)
        else:
            ypred = clf.predict(xte)
            yscore = clf.predict_proba(xte)
            yscore = [max(i.tolist()) for i in yscore]
    devLog['timeTesting'] = str(time.time()-teTic)

    ## TEST RELEASE ################################################################################
    print msg+': predicting RELEASE n= '+str(len(yrel))
    relTic = time.time()

    if method=='esvm':
        yrel,yrelscore = clf.predict(xrel)
    elif method=='psvm':
        if cfg['method']['kernel']=='precomputed':
            assert False
            # simMatTe = cutil.makeComProKernelMatFromSimMat(xrel,xtr,simMat)
            # yrel = clf.predict(simMatTe)
            # yrelscore = clf.predict_proba(simMatTe)
        else:
            yrel = clf.predict(xrel)
            yrelscore = clf.predict_proba(xrel)
            yrelscore = [max(i.tolist()) for i in yrelscore]
    devLog['timeRelease'] = str(time.time()-relTic)

    ## WRITE RESULT ################################################################################
    result = {'yte':yte,'ypred':ypred,'yscore':yscore,
              'xrelraw':xrelraw,'yrel':yrel,'yrelscore':yrelscore}

    print 'writing prediction...'
    with h5py.File(os.path.join(outDir,'result_'+tag+'.h5'),'w') as f:
        for k,v in result.iteritems():
            if 'raw' in k:
                f.create_dataset(k,data=v)
            else:
                dt = np.int8
                if 'score' in k: dt = np.float32
                f.create_dataset(k,data=v,dtype=dt)

    ##
    print 'writing devLog...'
    devLog['clfParam'] = clfParam
    devLog['devParam'] = cfg
    with open(os.path.join(outDir,'devLog_'+tag+'.json'),'w') as f:
        json.dump(devLog,f,indent=2,sort_keys=True)
    nb_runs, generations, mean_fit_mins, mean_fit_avg, mean_duration_mins, mean_duration_maxs = runs_results
    fig, ax1 = plt.subplots()
    fig.suptitle(f"Mean results over {nb_runs} runs, graph: '{graph_name}', duration constraint: {max_duration}")
    line1 = ax1.plot(generations, mean_fit_mins, "b-", label="Minimum Cost")
    line3 = ax1.plot(generations, mean_fit_avg, "g-", label= "Average Cost")
    ax1.set_xlabel("Generation")
    ax1.set_ylabel("Cost", color="b")
    for tl in ax1.get_yticklabels():
        tl.set_color("b")

    ax2 = ax1.twinx()
    line2 = ax2.plot(generations, mean_duration_mins, "r-", label="Minimum Duration")
    line4 = ax2.plot(generations, mean_duration_maxs, "y-", label="Maximum Duration")
    ax2.set_ylabel("Duration", color="r")
    for tl in ax2.get_yticklabels():
        tl.set_color("r")

    lns = line1 + line2 + line3 + line4
    labs = [l.get_label() for l in lns]
    ax1.legend(lns, labs, loc="upper right")

    OUTPUT_DIR = os.environ.get("AZ_BATCH_TASK_DIR", ".")
    OUTPUT_FILE = os.path.join(OUTPUT_DIR, f"{graph_name}_{nb_runs}_runs.png")
    plt.savefig(OUTPUT_FILE)

if __name__ == "__main__":
    graph_name = "MediumComplex"
    task_graph, MAXIMUM_DURATION = construct_graph(graph_name)
    shared.setConst(graph_name=graph_name, graph=task_graph, max_duration=MAXIMUM_DURATION)

    plot_runs_mean(multiple_runs_mean(10))
Пример #14
0
def main():
    if len(sys.argv)!=6:
        print 'USAGE:'
        print 'python -m scoop cluster.py [method] [nIter] [dataset#x] [compound/protein] [outDir]'
        return

    method = sys.argv[1]
    nIter = int(sys.argv[2])
    dataset = sys.argv[3]
    mode = sys.argv[4]
    outDir = sys.argv[5]
    outDir = os.path.join(outDir,
                          '-'.join([method+'#'+str(nIter),dataset,mode,util.tag()]))
    os.makedirs(outDir)

    ##
    print 'loading data...'
    dParam = dataset.split('#')
    disMat = None; iList = None
    if dParam[0]=='yamanishi':
        dataDir = os.path.join(DATASET_DIR,dParam[0])
        simDict = yam.loadKernel2(mode,dParam[1],os.path.join(dataDir,'similarity-mat'))
        simMat,iList = util.makeKernelMatrix(simDict)
        disMat = util.kernel2distanceMatrix('naive',simMat)
    else:
        assert False,'FATAL: unknown dataset'

    ##
    print 'clustering...'
    paramList = []
    if method=='dbscan':
        epsMin,epsMax = [0.0,1.0]
        nMin,nMax = [1,len(iList)]
        for i in range(nIter):
            eps = np.random.uniform(epsMin,epsMax,1)[0]
            n = np.random.randint(nMin,nMax,1)[0]
            paramList.append( dict(eps=eps,min_samples=n) )
    else:
        assert False

    sh.setConst(method=method)
    sh.setConst(mat=disMat)

    resList = list( fu.map(_cluster,paramList) )
    bestResIdxCal = _getBestResultIdx(resList,'calinski_harabaz_score')
    bestResIdxSil = _getBestResultIdx(resList,'silhouette_score')

    resDictCal = dict( zip(iList,resList[bestResIdxCal][0]) )
    resDictSil = dict( zip(iList,resList[bestResIdxSil][0]) )

    bestParamCal = dict(param=paramList[bestResIdxCal],
                        score=resList[bestResIdxCal][1])
    bestParamSil = dict(param=paramList[bestResIdxSil],
                        score=resList[bestResIdxSil][1])

    ##
    print 'writing result...'
    def _writeLabelAndParam(metric,resDict,paramDict):
        resDict2 = defaultdict(list); resDict3 = defaultdict(list)
        for k,v in resDict.iteritems(): resDict2[v].append(k)
        for k,v in resDict2.iteritems(): resDict3[k].append(len(v))
        summ = sum([v[0] for v in resDict3.values()])
        for k,v in resDict3.iteritems(): resDict3[k].append(float(v[0])/summ)

        fname = '_'.join([mode,metric])
        with open(os.path.join(outDir,fname+"_bestlabels.json"),'w') as f:
            json.dump(resDict,f,indent=2,sort_keys=True)
        with open(os.path.join(outDir,fname+"_bestlabels_stat.json"),'w') as f:
            json.dump(resDict3,f,indent=2,sort_keys=True)
        with open(os.path.join(outDir,fname+"_bestparams.json"),'w') as f:
            json.dump(paramDict,f,indent=2,sort_keys=True)

    _writeLabelAndParam('calinskiharabaz',resDictCal,bestParamCal)
    _writeLabelAndParam('silhouette',resDictSil,bestParamSil)
Пример #15
0
                if self.right:
                    return self.right.search(value)
        return None


if __name__ == '__main__':
    import time
    print("Beginning Tree generation.")

    # Generate the same tree on every workers.
    random.seed(314159265)
    exampleTree = BinaryTreeNode(0)
    for _ in range(128000):
        exampleTree.insert(random.randint(-sys.maxsize - 1, sys.maxsize))

    shared.setConst(myTree=exampleTree)

    print("Tree generation done.")

    # Splits the tree in two and process the left and right branches parallely
    ts = time.time()
    presult = max(
        futures.map(
            maxTreeDepthDivide,
            [exampleTree.payload],
            parallelLevel=2,
        ))
    pts = time.time() - ts

    # Serial computation of tree depth
    ts = time.time()
Пример #16
0
 shared.setConst(
     lettersValue={
         "a": 1,
         "b": 3,
         "c": 3,
         "d": 2,
         "e": 1,
         "f": 4,
         "g": 2,
         "h": 4,
         "i": 1,
         "j": 8,
         "k": 10,
         "l": 1,
         "m": 2,
         "n": 1,
         "o": 1,
         "p": 3,
         "q": 8,
         "r": 1,
         "r": 1,
         "s": 1,
         "t": 1,
         "u": 1,
         "v": 4,
         "w": 10,
         "x": 10,
         "y": 10,
         "z": 10,
     }
 )
Пример #17
0
    parser.add_argument('AdaptionParamSet')
    parser.add_argument('--listindex', type=int, help="index of value list")
    parser.add_argument(
        '--outputFileFolder',
        type=str,
        help="where to store the output, default is working directory")
    parser.add_argument('--fileName',
                        type=str,
                        help="name of vesselfile to optimize")
    goodArguments, otherArguments = parser.parse_known_args()
    print("running with %s" % goodArguments.AdaptionParamSet)

    if (str(goodArguments.AdaptionParamSet).startswith('value_li')):
        bla = int(goodArguments.listindex)
        print("list index: %i chosen" % bla)
        shared.setConst(parameterListIndex=bla)
    #adaption parameters
    shared.setConst(adaptionParams=goodArguments.AdaptionParamSet)
    #file
    if (goodArguments.fileName):
        vfile_name = goodArguments.fileName
        vessel_grp = "vessels"  #default place for vesselgenerator
    else:
        if 0:  # 2d set
            vfile_name = "/localdisk/thierry/vessel_trees_better/my_chosen/PSO_data_vessels-large_2d-typeE-17x1L600-sample05_adption_p_human_guess.h5"
        if 1:  # 3d set
            vfile_name = "/localdisk/thierry/vessel_trees_better/my_chosen/PSO_data_vessels-large_2d-typeE-9x11L600-sample13_adption_p_human_guess.h5"
        vessel_grp = "adaption/vessels_after_adaption"
    shared.setConst(vesselInputFile=vfile_name)
    #group
    shared.setConst(vessel_grp=vessel_grp)
Пример #18
0
    value = 0
    for word in words:
        for letter in word:
            # shared.getConst will evaluate to the dictionary broadcasted by
            # the root Future
            value += shared.getConst('lettersValue')[letter]
    return value


if __name__ == "__main__":
    # Set the values of the letters according to the language and broadcast it
    # This list is set at runtime
    import sys
    if len(sys.argv) > 1 and sys.argv[1] == 'francais':
        shared.setConst(lettersValue={'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1,
        'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k':10, 'l': 1, 'm': 2, 'n': 1,
        'o': 1, 'p': 3, 'q': 8, 'r': 1, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4,
        'w':10, 'x':10, 'y':10, 'z': 10})
        print("French letter values used.")
    else:
        shared.setConst(lettersValue={'a': 1, 'b': 3, 'c': 3, 'd': 2, 'e': 1,
        'f': 4, 'g': 2, 'h': 4, 'i': 1, 'j': 8, 'k': 5, 'l': 1, 'm': 3, 'n': 1,
        'o': 1, 'p': 3, 'q':10, 'r': 1, 'r': 1, 's': 1, 't': 1, 'u': 1, 'v': 4,
        'w': 4, 'x': 8, 'y': 4, 'z': 10})
        print("English letter values used.")

    # Get the player words (generate a list of random letters 
    import random
    import string
    random.seed(3141592653)
    words = []
    player_quantity = 4
Пример #19
0

def myFunc(parameter):
    """This function will be executed on the remote host even if it was not
       available at launch."""
    print('Hello World from {0}!'.format(scoop.worker))

    # It is possible to get a constant anywhere
    print(shared.getConst('myVar')[2])

    # Parameters are handled as usual
    return parameter + 1


if __name__ == "__main__":
    # Populate the shared constants
    shared.setConst(myVar={
        1: 'First element',
        2: 'Second element',
        3: 'Third element',
    })
    shared.setConst(secondVar="Hello World!")
    shared.setConst(myFunc=myFunc)

    # Use the previously defined shared function
    print(list(futures.map(myFunc, range(10))))
    
    # Un-commenting the following line will give a TypeError
    # since re-defining a constant is not allowed.
    #shared.setConst(myVar="Variable re-assignation")
def configureMaster():
    global CONFIGURED
    if CONFIGURED:
      return
    # default parameters
    global MYSYSTEM, NGEN, N_RANDOM_PROBLEMS, RANDOM_SEED, FILE_POPULATION, USE_RECAST, BASELINE, RUN_OPT, OUTPUT_FOLDER
    MYSYSTEM = 'anymal'
    NGEN = 20
    N_RANDOM_PROBLEMS = 0
    RANDOM_SEED = 5489
    FILE_POPULATION = ''
    USE_RECAST = False
    BASELINE = ''
    RUN_OPT = True
    # get arguments
    try:
      opts, args = getopt.getopt(sys.argv[1:],"s:n:g:e:b:l:rc")
    except getopt.GetoptError:
      print("deap-arch-es.py")
      print("  -s <SYSTEM>: the sytem we plan on 'anymal', 'starleth', or 'dummy'")
      print("  -n <NGEN>  : how many generations to run the optimization")
      print("  -g <NPROBS>: how many random problems to generate")
      print("  -e <RSEED> : random seed for problems to generate")
      print("  -b <NAME>  : use baseline method with this name")
      print("  -l <FILE>  : load the initial population from a file")
      print("  -r         : whether to use recast")
      print("  -c         : only check/evaluate population (skip optimization)")
      sys.exit(2)
    # parse arguments (normal)
    for opt, arg in opts:
      if opt == "-s":
        MYSYSTEM = arg
      elif opt == "-n":
        NGEN = int(arg)
      elif opt == "-g":
        N_RANDOM_PROBLEMS = int(arg)
      elif opt == "-e":
        RANDOM_SEED = int(arg)
      elif opt == "-b":
        BASELINE = arg
      elif opt == "-l":
        FILE_POPULATION = arg
      elif opt == "-r":
        USE_RECAST = True
      elif opt == "-c":
        RUN_OPT = False
    # output folder
    OUTPUT_FOLDER = "%s-%s-%s-randprobs%s-%s/" % (BASELINE if BASELINE != '' else "opt", MYSYSTEM, "recast" if USE_RECAST else "norecast", N_RANDOM_PROBLEMS, time.strftime("%Y%m%d-%H%M%S"))
    if not os.path.exists(OUTPUT_FOLDER):
      os.mkdir(OUTPUT_FOLDER)
    # share parameters with SCOOP workers
    if SCOOP_IS_RUNNING:
      shared.setConst(MYSYSTEM=MYSYSTEM)
      shared.setConst(N_RANDOM_PROBLEMS=N_RANDOM_PROBLEMS)
      shared.setConst(RANDOM_SEED=RANDOM_SEED)
      shared.setConst(USE_RECAST=USE_RECAST)
      shared.setConst(BASELINE=BASELINE)
      shared.setConst(OUTPUT_FOLDER=OUTPUT_FOLDER)
    # finish
    configureEvaluator()
    CONFIGURED = True
Пример #21
0
            else:
                if self.right:
                    return self.right.search(value)
        return None

if __name__ == '__main__':
    import time
    print("Beginning Tree generation.")

    # Generate the same tree on every workers.
    random.seed(314159265)
    exampleTree = BinaryTreeNode(0)
    for _ in range(128000):
        exampleTree.insert(random.randint(-sys.maxsize - 1, sys.maxsize))

    shared.setConst(myTree=exampleTree)

    print("Tree generation done.")

    # Splits the tree in two and process the left and right branches parallely
    ts = time.time()
    presult = max(
        futures.map(
            maxTreeDepthDivide,
            [exampleTree.payload],
            parallelLevel=2,
        )
    )
    pts = time.time() - ts

    # Serial computation of tree depth
Пример #22
0
                    lst[:middle],
                    lst[middle:],
                ],
                repeat(current_depth+1),
                repeat(parallel_depth),
            )
        )
    else:
        results = []
        results.append(mergesort(lst[:middle]))
        results.append(mergesort(lst[middle:]))
    return merge(*results)


if __name__ == "__main__":
    the_list = [random.randint(-sys.maxsize - 1, sys.maxsize) for r in range(10000)]
    shared.setConst(the_list=the_list)

    ts = time.time()
    parallel_result = mergesort(the_list, parallel_depth=1)
    pts = time.time() - ts

    ts = time.time()
    serial_result = mergesort(the_list)
    sts = time.time() - ts
    
    print("Parallel time: {0:.5f}s".format(pts))
    print("Serial time:   {0:.5f}s".format(sts))

    assert serial_result == parallel_result
Пример #23
0
                    lst[middle:],
                ],
                repeat(current_depth + 1),
                repeat(parallel_depth),
            ))
    else:
        results = []
        results.append(mergesort(lst[:middle]))
        results.append(mergesort(lst[middle:]))
    return merge(*results)


if __name__ == "__main__":
    the_list = [
        random.randint(-sys.maxsize - 1, sys.maxsize) for r in range(10000)
    ]
    shared.setConst(the_list=the_list)

    ts = time.time()
    parallel_result = mergesort(the_list, parallel_depth=1)
    pts = time.time() - ts

    ts = time.time()
    serial_result = mergesort(the_list)
    sts = time.time() - ts

    print("Parallel time: {0:.5f}s".format(pts))
    print("Serial time:   {0:.5f}s".format(sts))

    assert serial_result == parallel_result
Пример #24
0
                        version='%(prog)s version 0.9')
    args = parser.parse_args()
    return args


if __name__ == "__main__":

    try:

        args = cmdlineparse()

        if not args.PROCESSED_ALIGNMENT_FILE:

            progbar = ProgressBar(100)
            aln_index = 0
            shared.setConst(PROGBAR=progbar)
            shared.setConst(ALN_INDEX=aln_index)
            shared.setConst(ARGS=args)
            shared.setConst(chains_bin_dir=CHAINS_BIN_DIR)
            fasta_file_list = [
                args.peptide_fasta_file + ".chunk" + str(num)
                for num in range(1, args.CPUs + 1)
            ]
            if args.COMPRESS:
                list_file_list = [
                    args.peptide_list_file + ".chunk" + str(num) + ".bz2"
                    for num in range(1, args.CPUs + 1)
                ]
            else:
                list_file_list = [
                    args.peptide_list_file + ".chunk" + str(num)
Пример #25
0
    logging.info('run time: %d sec\n', elapsed_time)
    logging.info('max possible fitness for the nonograms ran: %d\n')
    logging.info('log: %s\n', log)
    logging.info('pop: %s\n', utils.individual_lst_to_str(pop))
    logging.info('hof: %s\n', utils.individual_lst_to_str(hof))

    logging.info('stats: %s\n', stats)

    fitnesses = [ind.fitness.values for ind in pop]
    plot = Plotter(log, fitnesses)
    if plot_d3_fitness:
        plot.plot_population_tuples_3d()
    if plot_fitness_stats:
        plot.plot_fitness_stats_from_logbook()
    if plot_min_max_stats:
        plot.plot_min_max_counts()
    if plot_fitness_distribution_2d:
        plot.plot_fitness_distribution_2d()


from scoop import shared
from utils import load_train_and_test_sets
if __name__ == '__main__':
    train_test_sets = load_train_and_test_sets()
    train_dicts = train_test_sets['train']
    train_nonograms = [(d['unsolved'], d['solved']) for d in train_dicts]
    test_dicts = train_test_sets['test']
    test_nonograms = [(d['unsolved'], d['solved']) for d in test_dicts]
    shared.setConst(train_nonograms=train_nonograms)
    main()