import numpy as np import os import time from JoinCmaps import * # k[x,y,z] def div_veccon(kc, kh, nbl, rundir): t0 = time.time() kc = np.where(kc == kh, 1, 0).astype(int) tcmaps = time.time() kc = get_smallCmap(kc, nbl, rundir) tcmaps = time.time() - tcmaps # if s_scale/dev/null") #'cd ' +exeDir++'>/dev/null' vec = ( np.loadtxt(params[-2]) .reshape(vec.shape[0], vec.shape[1], vec.shape[2]) .astype(int) ) return vec def ConConfig(sx, sy, sz, Nz, rundir): params = [] if Nz == 1: params = [ "1", "4", "vecconec.txt", str(sx) + " " + str(sy), "1.0 1.0", "pardol.STA", "pardol.CCO", "pardol.COF", ] execCon = "conec2d" else: params = [ "1", "6", "vecconec.txt", str(sx) + " " + str(sy) + " " + str(sz), "1.0 1.0 1.0", "30", "pardol.STA", "pardol.CCO", "pardol.COF", ] execCon = "conec3d" with open(rundir + "coninput.txt", "w") as f: for item in params: f.write("%s\n" % item) return params, execCon def join(vec, nbl): Nx, Ny, Nz = vec.shape[0], vec.shape[1], vec.shape[2] sx, sy, sz = Nx // nbl, Ny // nbl, Nz // nbl ex, ey, ez = np.log2(Nx), np.log2(Ny), np.log2(Nz) if Nz == 1: sz = 1 nbz = 1 ez = 1 esz = 1 else: esz = np.log2(sz) esx, esy = np.log2(sx), np.log2(sy) for bs in range(0, int(ex - esx)): nbx, nby = int(2 ** (ex - esx - bs - 1)), int(2 ** (ey - esy - bs - 1)) if Nz == 1: sz = 1 nbz = 1 else: nbz = int(2 ** (ez - esz - bs - 1)) sz = Nz // nbz sx, sy = Nx // nbx, Ny // nby for i in range(nbx): for j in range(nby): for k in range(nbz): a = 2 vec[ i * sx : (i + 1) * sx, j * sy : (j + 1) * sy, k * sz : (k + 1) * sz, ] = joinBox( vec[ i * sx : (i + 1) * sx, j * sy : (j + 1) * sy, k * sz : (k + 1) * sz, ], True, False, ) return vec """ job=0 k=np.load('../../data/'+str(job)+'/k.npy') div_veccon(k,100,1,'./') div_veccon(k,100,2,'./') div_veccon(k,100,4,'./') """ for job in range(6): k = np.load("../../data/" + str(job) + "/k.npy") print(job) res = div_veccon(k, 100, 4, "./") np.savetxt("../../data/" + str(job) + "/Cmap_res.txt", res) res = div_veccon(k, 100, 1, "./") # div_veccon(k,100,64,'./') # div_veccon(k,100,128,'./')