Ejemplo n.º 1
0
def main():
    """
    
    """
    #mine = MINE()
    #hsic_lasso = HSICLasso()
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()
    size = comm.Get_size()
    root = 0

    collist = []
    for colname in glob.glob("./run*/COL*"):
        for line in open(colname):
            if "#" in line:
                continue
            line = line.split()
            t = float(line[0])
            if t < 10000.0:
                continue
            elif 50000.0 < t:
                break
            collist.append(line)
        #break
    #MINEs, TICs =  pstats(collist)
    #print(TICs)
    for i in range(len(collist[0])-1):
        for j in range(i+1, len(collist[0])-1):
        #for j in range(i+1, i + 5):
            miclist = []
            ticlist = []
            for _ in range(10):
            #if True:
                colpart = random.sample(collist, 10000)
                #colpart = collist
                x = np.array([a[i+1] for a in colpart], dtype=float)
                y = np.array([a[j+1] for a in colpart], dtype=float)
                #xy = np.array([x,y])
                #mine = MINE()
                mine = MINE(est="mic_e")
                mine.compute_score(x,y)
                miclist.append(mine.mic())
                ticlist.append(mine.tic())
            #miclist = comm.gather(mine.mic(), root=0)
            #ticlist = comm.gather(mine.tic(), root=0)

            #hsic_lasso.input(xy, np.array([0,1]))
            #hsic_lasso.input(np.array([[1, 1, 1], [2, 2, 2]]), np.array([0, 1]))
            #hsic_lasso.regression(5)
            #hsic_lasso.classification(10)
            #print(hsic_lasso.dump())
            if rank == root:
                print("%s,%s, %s, %s"%(i,j,np.mean(miclist),np.mean(ticlist)), flush = True)
                with open("./minedata.csv", "a") as wf:
                    wf.write("%s, %s, %s, %s\n"%(i,j,np.mean(miclist),np.mean(ticlist)))
Ejemplo n.º 2
0
def Maximal_Compute(df, col, tic=False):
    #http://web.mit.edu/dnreshef/www/websiteFiles/Papers/AOAS-2018.pdf
    mine = MINE(alpha=0.6, c=15)

    col_dict = dict()
    col_dict['index'] = col

    if tic:
        tic_dict = dict()
        tic_dict['index'] = col

    for column in df.columns:
        mine.compute_score(df[col], df[column])
        col_dict[column] = mine.mic()

        if tic:
            tic_dict[column] = mine.tic()
    if tic:
        return (col_dict, tic_dict)
    else:
        return col_dict
Ejemplo n.º 3
0
def mine(pair):

    assert len(pair) == 4 and isinstance(pair, tuple)

    try:

        x, y, x_name, y_name = pair

        mine_ = MINE()

        mine_.compute_score(x, y)

        result = {
            (x_name, y_name):
            (mine_.mic(), mine_.mas(), mine_.mcn(), mine_.mev(), mine_.tic())
        }

        return result

    except:

        return None
Ejemplo n.º 4
0
        # null hypothesis
        for k in range(1, n_null+1):
            x = np.random.rand(n)
            r = np.random.randn(n)
            y = f()

            # resimulate x for the null scenario
            x = np.random.rand(n)

            mine_approx.compute_score(x, y)
            mine_e.compute_score(x, y)

            mic_approx_null.append(mine_approx.mic())
            mic_e_null.append(mine_e.mic())
            tic_e_null.append(mine_e.tic())
            r2_null.append(np.corrcoef(x, y)[0][1]**2)

        # alternative hypothesis
        for k in range(1, n_alt+1):
            x = np.random.rand(n)
            r = np.random.randn(n)
            y = f()

            mine_approx.compute_score(x, y)
            mine_e.compute_score(x, y)

            mic_approx_alt.append(mine_approx.mic())
            mic_e_alt.append(mine_e.mic())
            tic_e_alt.append(mine_e.tic())
            r2_alt.append(np.corrcoef(x, y)[0][1]**2)