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)))
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
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
# 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)