def mi_reshape(X, y, seq_len = 1): if len(X.shape) == 3: X = np_reshape(X, (int((X.shape[0] * X.shape[1])/seq_len), seq_len, X.shape[2])) else: X = np_reshape(X, (int(X.shape[0]/seq_len), seq_len, X.shape[1])) if not y is None: if len(y.shape) == 3: y = np_reshape(y, (int((y.shape[0] * y.shape[1])/seq_len), seq_len, y.shape[2])) else: if seq_len != 1: y = np_reshape(y, (int(y.shape[0]/seq_len), seq_len, y.shape[1])) print(X.shape, y.shape) else: print(X.shape) return [X, y]
def pca(self, data_matrix): """Perform PCA. Principal components are given in self.pca, and the variance in self.variance. Parameters ---------- data_matrix : list of lists List of tetranucleotide signatures """ cols = len(data_matrix[0]) data_matrix = np_reshape(np_array(data_matrix), (len(data_matrix), cols)) pca = PCA() pc, variance = pca.pca_matrix(data_matrix, 3, bCenter=True, bScale=False) # ensure pc matrix has at least 3 dimensions if pc.shape[1] == 1: pc = np_append(pc, np_zeros((pc.shape[0], 2)), 1) variance = np_append(variance[0], np_ones(2)) elif pc.shape[1] == 2: pc = np_append(pc, np_zeros((pc.shape[0], 1)), 1) variance = np_append(variance[0:2], np_ones(1)) return pc, variance
def mi_reshape_probs(probs, seq_len = 1): if len(probs.shape) == 3: if seq_len != probs.shape[1]: print('NOTA: La dimensión Seq_Len de probs NO coincide con el param. seq_len!') probs = np_reshape(probs, (probs.shape[0] * probs.shape[1], probs.shape[2])) print(probs.shape) return(probs)
def kpts_from_file(self, **kwargs): from numpy import reshape as np_reshape from numpy import fromfile as np_fromfile from numpy import ndarray as ndarray # Read k-points from file (obsolete): nkTetra = kwargs['nkTetra'] kpt_filename = "symmetries/" + self.prefix + ".kcartesian_" + str( nkTetra) kcartesian = np_fromfile(kpt_filename, sep=' ') # Get reciprocal lattice vectors: # Pymatgen. lattice. reciprocal_lattice(self) # Get inverse matrix, to then convert to recp. # Note that cartesian coordinates are in angstrom: bohr2ang = 0.529177249 reciprocal_lattice = self.structure.lattice.reciprocal_lattice invM = reciprocal_lattice.inv_matrix / bohr2ang # Check k-points in file are OK nk = kcartesian.size / 3 if (nk != nkTetra): print("%i k-points found in file %s.\nExpecting %i \n" % (nk, nkTetra)) exit(1) kcartesian = np_reshape(kcartesian, (nk, 3)) kpt = ndarray(shape=(nkTetra, 3), dtype=float) for ik in range(nkTetra): kk = kcartesian[ik][:] kred = dot(kk, invM) kpt[ik][:] = round(kred, 6)
def read_input(self, sample_name: str, start_idx: int, end_idx: int): self.__check_indexes(start_idx, end_idx) full_transform = self.read_full_transform(sample_name) if full_transform.shape[0] < self.time_size: return np_array([]) x = self.normalize_input(full_transform[start_idx:end_idx, :]) return np_reshape(x, (1, self.time_size, self.freq_size, 1))
def plotRegion(self, px, py, pz, fileName="", tag="", column=False): """Plot the region surrounding a point """ import matplotlib as mpl disp_vals = np_array([]) disp_cols = np_array([]) num_points = 0 # plot all points within span (z_lower, z_upper) = self.makeCoordRanges(pz, self.span) if column: z_lower = 0 z_upper = self.PM.scaleFactor - 1 (x_lower, x_upper) = self.makeCoordRanges(px, self.span) (y_lower, y_upper) = self.makeCoordRanges(py, self.span) for z in range(z_lower, z_upper): realz = self.PM.scaleFactor - z - 1 for x in range(x_lower, x_upper): for y in range(y_lower, y_upper): if (x, y, realz) in self.im2RowIndicies: for row_index in self.im2RowIndicies[(x, y, realz)]: if ( row_index not in self.PM.binnedRowIndicies and row_index not in self.PM.restrictedRowIndicies ): num_points += 1 disp_vals = np_append(disp_vals, self.PM.transformedCP[row_index]) disp_cols = np_append(disp_cols, self.PM.contigColours[row_index]) # make a black mark at the max values small_span = self.span / 2 (x_lower, x_upper) = self.makeCoordRanges(px, small_span) (y_lower, y_upper) = self.makeCoordRanges(py, small_span) (z_lower, z_upper) = self.makeCoordRanges(pz, small_span) for z in range(z_lower, z_upper): realz = self.PM.scaleFactor - z - 1 for x in range(x_lower, x_upper): for y in range(y_lower, y_upper): if (x, y, realz) in self.im2RowIndicies: for row_index in self.im2RowIndicies[(x, y, realz)]: if ( row_index not in self.PM.binnedRowIndicies and row_index not in self.PM.restrictedRowIndicies ): num_points += 1 disp_vals = np_append(disp_vals, self.PM.transformedCP[row_index]) disp_cols = np_append(disp_cols, htr(0, 0, 0)) # reshape disp_vals = np_reshape(disp_vals, (num_points, 3)) disp_cols = np_reshape(disp_cols, (num_points, 3)) fig = plt.figure() ax = fig.add_subplot(111, projection="3d") cm = mpl.colors.LinearSegmentedColormap("my_colormap", disp_cols, 1024) result = ax.scatter( disp_vals[:, 0], disp_vals[:, 1], disp_vals[:, 2], edgecolors=disp_cols, c=disp_cols, cmap=cm, marker="." ) title = str.join(" ", ["Focus at: (", str(px), str(py), str(self.PM.scaleFactor - pz - 1), ")\n", tag]) plt.title(title) if fileName != "": fig.set_size_inches(6, 6) plt.savefig(fileName, dpi=300) elif show: plt.show() plt.close(fig) del fig
def renderTransCPData(self, fileName="", show=True, elev=45, azim=45, all=False, showAxis=False, primaryWidth=12, primarySpace=3, dpi=300, format='png', fig=None, highlight=None, restrictedBids=[], alpha=1, ignoreContigLengths=False): """Plot transformed data in 3D""" del_fig = False if (fig is None): fig = plt.figure() del_fig = True else: plt.clf() if (all): myAXINFO = { 'x': { 'i': 0, 'tickdir': 1, 'juggled': (1, 0, 2), 'color': (0, 0, 0, 0, 0) }, 'y': { 'i': 1, 'tickdir': 0, 'juggled': (0, 1, 2), 'color': (0, 0, 0, 0, 0) }, 'z': { 'i': 2, 'tickdir': 0, 'juggled': (0, 2, 1), 'color': (0, 0, 0, 0, 0) }, } ax = fig.add_subplot(131, projection='3d') sc = ax.scatter(self.transformedCP[:, 0], self.transformedCP[:, 1], self.transformedCP[:, 2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect ax.azim = 0 ax.elev = 0 ax.set_xlim3d(0, self.scaleFactor) ax.set_ylim3d(0, self.scaleFactor) ax.set_zlim3d(0, self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO ax = fig.add_subplot(132, projection='3d') sc = ax.scatter(self.transformedCP[:, 0], self.transformedCP[:, 1], self.transformedCP[:, 2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect ax.azim = 90 ax.elev = 0 ax.set_xlim3d(0, self.scaleFactor) ax.set_ylim3d(0, self.scaleFactor) ax.set_zlim3d(0, self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO ax = fig.add_subplot(133, projection='3d') sc = ax.scatter(self.transformedCP[:, 0], self.transformedCP[:, 1], self.transformedCP[:, 2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect ax.azim = 0 ax.elev = 90 ax.set_xlim3d(0, self.scaleFactor) ax.set_ylim3d(0, self.scaleFactor) ax.set_zlim3d(0, self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO else: ax = fig.add_subplot(111, projection='3d') if len(restrictedBids) == 0: if highlight is None: print("BF:", np_shape(self.transformedCP)) if ignoreContigLengths: sc = ax.scatter(self.transformedCP[:, 0], self.transformedCP[:, 1], self.transformedCP[:, 2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, s=10., vmin=0.0, vmax=1.0, marker='.') else: sc = ax.scatter(self.transformedCP[:, 0], self.transformedCP[:, 1], self.transformedCP[:, 2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=np_sqrt(self.contigLengths), marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect else: #draw the opaque guys first """ sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=100., marker='s', alpha=alpha) sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect """ # now replot the highlighted guys disp_vals = np_array([]) disp_GCs = np_array([]) thrower = {} hide_vals = np_array([]) hide_GCs = np_array([]) num_points = 0 for bin in highlight: for row_index in bin.rowIndices: num_points += 1 disp_vals = np_append( disp_vals, self.transformedCP[row_index]) disp_GCs = np_append(disp_GCs, self.contigGCs[row_index]) thrower[row_index] = False # reshape disp_vals = np_reshape(disp_vals, (num_points, 3)) num_points = 0 for i in range(len(self.indices)): try: thrower[i] except KeyError: num_points += 1 hide_vals = np_append(hide_vals, self.transformedCP[i]) hide_GCs = np_append(hide_GCs, self.contigGCs[i]) # reshape hide_vals = np_reshape(hide_vals, (num_points, 3)) sc = ax.scatter(hide_vals[:, 0], hide_vals[:, 1], hide_vals[:, 2], edgecolors='none', c=hide_GCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=100., marker='s', alpha=alpha) sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect sc = ax.scatter(disp_vals[:, 0], disp_vals[:, 1], disp_vals[:, 2], edgecolors='none', c=disp_GCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=10., marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect print(np_shape(disp_vals), np_shape(hide_vals), np_shape(self.transformedCP)) # render color bar cbar = plt.colorbar(sc, shrink=0.5) cbar.ax.tick_params() cbar.ax.set_title("% GC", size=10) cbar.set_ticks([0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]) cbar.ax.set_ylim([0.15, 0.85]) mungeCbar(cbar) else: r_trans = np_array([]) r_cols = np_array([]) num_added = 0 for i in range(len(self.indices)): if self.binIds[i] not in restrictedBids: r_trans = np_append(r_trans, self.transformedCP[i]) r_cols = np_append(r_cols, self.contigGCs[i]) num_added += 1 r_trans = np_reshape(r_trans, (num_added, 3)) print(np_shape(r_trans)) #r_cols = np_reshape(r_cols, (num_added,3)) sc = ax.scatter(r_trans[:, 0], r_trans[:, 1], r_trans[:, 2], edgecolors='none', c=r_cols, cmap=self.colorMapGC, s=10., vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args: None # disable depth transparency effect # render color bar cbar = plt.colorbar(sc, shrink=0.5) cbar.ax.tick_params() cbar.ax.set_title("% GC", size=10) cbar.set_ticks([0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]) cbar.ax.set_ylim([0.15, 0.85]) mungeCbar(cbar) ax.azim = azim ax.elev = elev ax.set_xlim3d(0, self.scaleFactor) ax.set_ylim3d(0, self.scaleFactor) ax.set_zlim3d(0, self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) if (not showAxis): ax.set_axis_off() if (fileName != ""): try: if (all): fig.set_size_inches(3 * primaryWidth + 2 * primarySpace, primaryWidth) else: fig.set_size_inches(primaryWidth, primaryWidth) plt.savefig(fileName, dpi=dpi, format=format) except: print("Error saving image", fileName, exc_info()[0]) raise elif (show): try: plt.show() except: print("Error showing image", exc_info()[0]) raise if del_fig: plt.close(fig) del fig
def renderTransCPData(self, fileName="", show=True, elev=45, azim=45, all=False, showAxis=False, primaryWidth=12, primarySpace=3, dpi=300, format='png', fig=None, highlight=None, restrictedBids=[], alpha=1, ignoreContigLengths=False): """Plot transformed data in 3D""" del_fig = False if(fig is None): fig = plt.figure() del_fig = True else: plt.clf() if(all): myAXINFO = { 'x': {'i': 0, 'tickdir': 1, 'juggled': (1, 0, 2), 'color': (0, 0, 0, 0, 0)}, 'y': {'i': 1, 'tickdir': 0, 'juggled': (0, 1, 2), 'color': (0, 0, 0, 0, 0)}, 'z': {'i': 2, 'tickdir': 0, 'juggled': (0, 2, 1), 'color': (0, 0, 0, 0, 0)}, } ax = fig.add_subplot(131, projection='3d') sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect ax.azim = 0 ax.elev = 0 ax.set_xlim3d(0,self.scaleFactor) ax.set_ylim3d(0,self.scaleFactor) ax.set_zlim3d(0,self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO ax = fig.add_subplot(132, projection='3d') sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect ax.azim = 90 ax.elev = 0 ax.set_xlim3d(0,self.scaleFactor) ax.set_ylim3d(0,self.scaleFactor) ax.set_zlim3d(0,self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO ax = fig.add_subplot(133, projection='3d') sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='k', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect ax.azim = 0 ax.elev = 90 ax.set_xlim3d(0,self.scaleFactor) ax.set_ylim3d(0,self.scaleFactor) ax.set_zlim3d(0,self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) for axis in ax.w_xaxis, ax.w_yaxis, ax.w_zaxis: for elt in axis.get_ticklines() + axis.get_ticklabels(): elt.set_visible(False) ax.w_xaxis._AXINFO = myAXINFO ax.w_yaxis._AXINFO = myAXINFO ax.w_zaxis._AXINFO = myAXINFO else: ax = fig.add_subplot(111, projection='3d') if len(restrictedBids) == 0: if highlight is None: print "BF:", np_shape(self.transformedCP) if ignoreContigLengths: sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, s=10., vmin=0.0, vmax=1.0, marker='.') else: sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=np_sqrt(self.contigLengths), marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect else: #draw the opaque guys first """ sc = ax.scatter(self.transformedCP[:,0], self.transformedCP[:,1], self.transformedCP[:,2], edgecolors='none', c=self.contigGCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=100., marker='s', alpha=alpha) sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect """ # now replot the highlighted guys disp_vals = np_array([]) disp_GCs = np_array([]) thrower = {} hide_vals = np_array([]) hide_GCs = np_array([]) num_points = 0 for bin in highlight: for row_index in bin.rowIndices: num_points += 1 disp_vals = np_append(disp_vals, self.transformedCP[row_index]) disp_GCs = np_append(disp_GCs, self.contigGCs[row_index]) thrower[row_index] = False # reshape disp_vals = np_reshape(disp_vals, (num_points, 3)) num_points = 0 for i in range(len(self.indices)): try: thrower[i] except KeyError: num_points += 1 hide_vals = np_append(hide_vals, self.transformedCP[i]) hide_GCs = np_append(hide_GCs, self.contigGCs[i]) # reshape hide_vals = np_reshape(hide_vals, (num_points, 3)) sc = ax.scatter(hide_vals[:,0], hide_vals[:,1], hide_vals[:,2], edgecolors='none', c=hide_GCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=100., marker='s', alpha=alpha) sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect sc = ax.scatter(disp_vals[:,0], disp_vals[:,1], disp_vals[:,2], edgecolors='none', c=disp_GCs, cmap=self.colorMapGC, vmin=0.0, vmax=1.0, s=10., marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect print np_shape(disp_vals), np_shape(hide_vals), np_shape(self.transformedCP) # render color bar cbar = plt.colorbar(sc, shrink=0.5) cbar.ax.tick_params() cbar.ax.set_title("% GC", size=10) cbar.set_ticks([0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]) cbar.ax.set_ylim([0.15, 0.85]) mungeCbar(cbar) else: r_trans = np_array([]) r_cols=np_array([]) num_added = 0 for i in range(len(self.indices)): if self.binIds[i] not in restrictedBids: r_trans = np_append(r_trans, self.transformedCP[i]) r_cols = np_append(r_cols, self.contigGCs[i]) num_added += 1 r_trans = np_reshape(r_trans, (num_added,3)) print np_shape(r_trans) #r_cols = np_reshape(r_cols, (num_added,3)) sc = ax.scatter(r_trans[:,0], r_trans[:,1], r_trans[:,2], edgecolors='none', c=r_cols, cmap=self.colorMapGC, s=10., vmin=0.0, vmax=1.0, marker='.') sc.set_edgecolors = sc.set_facecolors = lambda *args:None # disable depth transparency effect # render color bar cbar = plt.colorbar(sc, shrink=0.5) cbar.ax.tick_params() cbar.ax.set_title("% GC", size=10) cbar.set_ticks([0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]) cbar.ax.set_ylim([0.15, 0.85]) mungeCbar(cbar) ax.azim = azim ax.elev = elev ax.set_xlim3d(0,self.scaleFactor) ax.set_ylim3d(0,self.scaleFactor) ax.set_zlim3d(0,self.scaleFactor) ax.set_xticklabels([]) ax.set_yticklabels([]) ax.set_zticklabels([]) ax.set_xticks([]) ax.set_yticks([]) ax.set_zticks([]) if(not showAxis): ax.set_axis_off() if(fileName != ""): try: if(all): fig.set_size_inches(3*primaryWidth+2*primarySpace,primaryWidth) else: fig.set_size_inches(primaryWidth,primaryWidth) plt.savefig(fileName,dpi=dpi,format=format) except: print "Error saving image",fileName, exc_info()[0] raise elif(show): try: plt.show() except: print "Error showing image", exc_info()[0] raise if del_fig: plt.close(fig) del fig
def r3_dnn_apply_keras(target_dirname, old_stft_obj=None, cuda=False, saving_to_disk=True): LOGGER.info( '{}: r3: Denoising original stft with neural network model...'.format( target_dirname)) ''' r3_dnn_apply takes an old_stft object (or side effect load from disk) and saves a new_stft object ''' scan_battery_dirname = os_path_dirname(target_dirname) model_dirname = os_path_dirname(os_path_dirname(scan_battery_dirname)) # load stft data if old_stft_obj is None: old_stft_fpath = os_path_join(target_dirname, 'old_stft.mat') with h5py_File(old_stft_fpath, 'r') as f: stft = np_concatenate( [f['old_stft_real'][:], f['old_stft_imag'][:]], axis=1) else: stft = np_concatenate( [old_stft_obj['old_stft_real'], old_stft_obj['old_stft_imag']], axis=1) N_beams, N_elements_2, N_segments, N_fft = stft.shape N_elements = N_elements_2 // 2 # combine stft_real and stft_imag # move element position axis stft = np_moveaxis(stft, 1, 2) # TODO: Duplicate? # reshape the to flatten first two axes stft = np_reshape( stft, [N_beams * N_segments, N_elements_2, N_fft]) # TODO: Duplicate? # process stft with networks k_mask = list(range(3, 6)) for frequency in k_mask: process_each_frequency_keras(model_dirname, stft, frequency) # reshape the stft data stft = np_reshape( stft, [N_beams, N_segments, N_elements_2, N_fft]) # TODO: Duplicate? # set zero outside analysis frequency range discard_mask = np_ones_like(stft, dtype=bool) discard_mask[:, :, :, k_mask] = False # pylint: disable=E1137 stft[discard_mask] = 0 del discard_mask # mirror data to negative frequencies using conjugate symmetry end_index = N_fft // 2 stft[:, :, :, end_index + 1:] = np_flip(stft[:, :, :, 1:end_index], axis=3) stft[:, :, N_elements:2 * N_elements, end_index + 1:] = -1 * stft[:, :, N_elements:2 * N_elements, end_index + 1:] # move element position axis stft = np_moveaxis(stft, 1, 2) # TODO: Duplicate? # change variable names # new_stft_real = stft[:, :N_elements, :, :] new_stft_real = stft[:, :N_elements, :, :].transpose() # new_stft_imag = stft[:, N_elements:, :, :] new_stft_imag = stft[:, N_elements:, :, :].transpose() del stft # change dimensions # new_stft_real = new_stft_real.transpose() # new_stft_imag = new_stft_imag.transpose() # save new stft data new_stft_obj = { 'new_stft_real': new_stft_real, 'new_stft_imag': new_stft_imag } if saving_to_disk is True: new_stft_fname = os_path_join(target_dirname, 'new_stft.mat') savemat(new_stft_fname, new_stft_obj) LOGGER.info('{}: r3 Done.'.format(target_dirname)) return new_stft_obj