def image_plot(folder): [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes( pattern_folder= "C:/Users/mllamosa/Dropbox/2018/Applus/welding patterns all/", file_name="Initial-Bottom.rpt") xi, yi = np.meshgrid(np.unique(ini_coord_x), np.unique(ini_coord_z)) name = folder.split(os.sep)[-2] + "_" + folder.split(os.sep)[-1] files = glob.glob(folder + "/*CH*rpt") if len(files) > 0: features = np.zeros(64) for file in files: # print(file) CH = file.split(os.sep)[-1].split("-")[-1].split(".")[0][2:] d = file.split(os.sep)[-1].split("-")[0].split(".")[0][1:] # print(CH, d) features[int(CH) - 1] = int(d) print("Using distortion at scenario", glob.glob(folder + "/D64*rpt")) try: distortions_data = open(glob.glob(folder + "/D64*rpt")[0], "r").read() except IndexError: print(glob.glob(folder + "/D64*rpt")) distortions_coord_x = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data). start()].split()[3:] [::6]).astype(float) distortions_coord_y = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data). start()].split()[4:] [::6]).astype(float) distortions_coord_z = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data). start()].split()[5:] [::6]).astype(float) zi = griddata((ini_coord_x + distortions_coord_x, ini_coord_z + distortions_coord_z), ini_coord_y + distortions_coord_y, (xi, yi), method='cubic') plt.imshow(zi, origin='lower', interpolation='none') plt.savefig('images/' + name + '_img.png') return name
def read_distortion(pattern_folder=None): [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes(pattern_folder=pattern_folder, file_name="Initial-Bottom.rpt") xyz = {} for folder_mask in glob.glob(pattern_folder + "/Mask*"): mask = np.loadtxt(folder_mask + "/mask.tab", delimiter=",") print(mask.shape) for folder in glob.glob(folder_mask + "/Scenario*"): print(folder) files = glob.glob(folder + "/*CH*rpt") if len(files) > 0: features = np.zeros(64) for file in files: # print(file) CH = file.split( os.sep)[-1].split("-")[-1].split(".")[0][2:] d = file.split(os.sep)[-1].split("-")[0].split(".")[0][1:] # print(CH, d) features[int(CH) - 1] = int(d) print("Using distortion at scenario", glob.glob(folder + "/D64*")) distortions_data = open( glob.glob(folder + "/D64*rpt")[0], "r").read() distortions_coord_x = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [3:][::6]).astype(float) distortions_coord_y = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [4:][::6]).astype(float) distortions_coord_z = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [5:][::6]).astype(float) xyz[folder_mask.split(os.sep)[-1] + "_" + folder.split(os.sep)[-1]] = np.array([ ini_coord_x + distortions_coord_x, ini_coord_z + distortions_coord_z, ini_coord_y + distortions_coord_y ]) return xyz
def distortion_to_image(pattern_folder=None): [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes(pattern_folder=pattern_folder, file_name="Initial-Bottom.rpt") xi, yi = np.meshgrid(np.unique(ini_coord_x), np.unique(ini_coord_z)) data = read_distortion(pattern_folder=pattern_folder) for filename in data.keys(): zi = griddata((data[filename][0], data[filename][1]), data[filename][2], (xi, yi), method='cubic') plt.imshow(zi, origin='lower', interpolation='none') plt.savefig('images/' + filename + '_img.png')
def pattern_sequence_masked_single(scenario_folder): [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes( pattern_folder= "C:/Users/mllamosa/Dropbox/2018/Applus/welding patterns all/", file_name="Initial-Bottom.rpt") xi, yi = np.meshgrid(np.unique(ini_coord_x), np.unique(ini_coord_z)) centroids_matrix = np.mgrid[(max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j, (max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j] centroids_matrix = centroids_matrix.reshape( 2, centroids_matrix.shape[1] * centroids_matrix.shape[2]).T coord_nodes_chunck = np.array([ini_coord_x, ini_coord_y, ini_coord_z]).T distances_matrix = distance.cdist( centroids_matrix, coord_nodes_chunck.mean(axis=0)[[0, 2]].reshape(1, 2), "euclidean") distances_matrix_corner = distance.cdist( centroids_matrix, np.array([[min(ini_coord_x), min(ini_coord_x)]]), "euclidean") mask = np.loadtxt(scenario_folder + "/../mask.tab", delimiter=",") name = scenario_folder.split(os.sep)[-2] + "_" + scenario_folder.split( os.sep)[-1] files = glob.glob(scenario_folder + "/*CH*rpt") features = np.zeros(64) for file in files: # print(file) CH = file.split(os.sep)[-1].split("-")[-1].split(".")[0][2:] d = file.split(os.sep)[-1].split("-")[0].split(".")[0][1:] # print(CH, d) features[int(CH) - 1] = int(d) print("Using distortion at scenario", glob.glob(scenario_folder)) print("Using distortion at scenario", glob.glob(scenario_folder + "/D64*rpt")[-1]) distortions_data = open(glob.glob(scenario_folder + "/D64*rpt")[0], "r").read() distortions_coord_x = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data).start( )].split()[3:][::6]).astype(float) distortions_coord_y = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data).start( )].split()[4:][::6]).astype(float) distortions_coord_z = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data).start( )].split()[5:][::6]).astype(float) zi = griddata( (ini_coord_x + distortions_coord_x, ini_coord_z + distortions_coord_z), ini_coord_y + distortions_coord_y, (xi, yi), method='cubic') distortions_coord_y = zi.flatten() distortion_chuck_x = xi.flatten().reshape(xi.flatten().shape[0], 1) distortion_chuck_y = distortions_coord_y.reshape( distortions_coord_y.shape[0], 1) distortion_chuck_z = yi.flatten().reshape(yi.flatten().shape[0], 1) features_matrix = np.hstack((features.reshape(1, len(features)), mask.reshape(1, mask.shape[0] * mask.shape[1]))) features_matrix_dist = distances_matrix[features.astype(int) - 1].T features_matrix_dist_corner = distances_matrix_corner[features.astype(int) - 1].T return [ np.hstack((features_matrix, features_matrix_dist, features_matrix_dist_corner)), (distortion_chuck_x, distortion_chuck_y, distortion_chuck_z), [ini_coord_x, ini_coord_y, ini_coord_z], name ]
def pattern_sequence_masked_parallel_( pattern_folder="C:/Users/mllamosa/Dropbox/2018/Applus/welding patterns all/" ): folder_parent = pattern_folder features_matrix = np.zeros(64) features_matrix_dist = np.zeros(64) pattern_names = [] file = pattern_folder + "Initial-Bottom.rpt" [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes( pattern_folder= "C:/Users/mllamosa/Dropbox/2018/Applus/welding patterns all/", file_name="Initial-Bottom.rpt") xi, yi = np.meshgrid(np.unique(ini_coord_x), np.unique(ini_coord_z)) centroids_matrix = np.mgrid[(max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j, (max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j] centroids_matrix = centroids_matrix.reshape( 2, centroids_matrix.shape[1] * centroids_matrix.shape[2]).T coord_nodes_chunck = np.array([ini_coord_x, ini_coord_y, ini_coord_z]).T distances_matrix = distance.cdist( centroids_matrix, coord_nodes_chunck.mean(axis=0)[[0, 2]].reshape(1, 2), "euclidean") distances_matrix_corner = distance.cdist( centroids_matrix, np.array([[min(ini_coord_x), min(ini_coord_x)]]), "euclidean") ll = 0 for folder_mask in glob.glob(folder_parent + "/Mask*"): mask = np.loadtxt(folder_mask + "/mask.tab", delimiter=",") k = 0 for folder in glob.glob(folder_mask + "/Scenario*"): print(folder) pattern_names.append( folder_mask.split(os.sep)[-1] + "_" + folder.split(os.sep)[-1]) files = glob.glob(folder + "/*CH*rpt") if len(files) > 0: features = np.zeros(64) for file in files: # print(file) CH = file.split( os.sep)[-1].split("-")[-1].split(".")[0][2:] d = file.split(os.sep)[-1].split("-")[0].split(".")[0][1:] # print(CH, d) features[int(CH) - 1] = int(d) print("Using distortion at scenario", glob.glob(folder + "/D64*")) distortions_data = open( glob.glob(folder + "/D64*rpt")[0], "r").read() distortions_coord_x = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [3:][::6]).astype(float) distortions_coord_y = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [4:][::6]).astype(float) distortions_coord_z = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end( ):re.search("Minimum", distortions_data).start()].split() [5:][::6]).astype(float) zi = griddata((ini_coord_x + distortions_coord_x, ini_coord_z + distortions_coord_z), ini_coord_y + distortions_coord_y, (xi, yi), method='cubic') distortions_coord_y = zi.flatten() distortion_chuck_x = xi.flatten().reshape( xi.flatten().shape[0], 1) distortion_chuck_y = distortions_coord_y.reshape( distortions_coord_y.shape[0], 1) distortion_chuck_z = yi.flatten().reshape( yi.flatten().shape[0], 1) if not k: # print(features.reshape(len(features), 1).shape, mask.reshape(1, mask.shape[0]*mask.shape[1]).shape) features_matrix = np.hstack( (features.reshape(1, len(features)), mask.reshape(1, mask.shape[0] * mask.shape[1]))) features_matrix_dist = distances_matrix[ features.astype(int) - 1].T features_matrix_dist_corner = distances_matrix_corner[ features.astype(int) - 1].T distortion_chuck_matrix_x = distortion_chuck_x distortion_chuck_matrix_y = distortion_chuck_y distortion_chuck_matrix_z = distortion_chuck_z k = 1 else: # print(features_matrix.shape, features.shape, mask.shape) features_matrix = np.vstack( (features_matrix, np.hstack( (features.reshape(1, len(features)), mask.reshape(1, mask.shape[0] * mask.shape[1]))))) features_matrix_dist = np.vstack( (features_matrix_dist, distances_matrix[features.astype(int) - 1].T)) features_matrix_dist_corner = np.vstack( (features_matrix_dist_corner, distances_matrix_corner[features.astype(int) - 1].T)) distortion_chuck_matrix_x = np.hstack( (distortion_chuck_matrix_x, distortion_chuck_x)) distortion_chuck_matrix_y = np.hstack( (distortion_chuck_matrix_y, distortion_chuck_y)) distortion_chuck_matrix_z = np.hstack( (distortion_chuck_matrix_z, distortion_chuck_z)) else: print("No data found in folder", folder) if not ll: features_matrix_full = np.hstack( (features_matrix, features_matrix_dist, features_matrix_dist_corner)) distortion_chuck_matrix_x_full = distortion_chuck_matrix_x distortion_chuck_matrix_y_full = distortion_chuck_matrix_y distortion_chuck_matrix_z_full = distortion_chuck_matrix_z ll = 1 else: features_matrix_full = np.vstack( (features_matrix_full, np.hstack((features_matrix, features_matrix_dist, features_matrix_dist_corner)))) distortion_chuck_matrix_x_full = np.hstack( (distortion_chuck_matrix_x_full, distortion_chuck_matrix_x)) distortion_chuck_matrix_y_full = np.hstack( (distortion_chuck_matrix_y_full, distortion_chuck_matrix_y)) distortion_chuck_matrix_z_full = np.hstack( (distortion_chuck_matrix_z_full, distortion_chuck_matrix_z)) print(features_matrix_full.shape) # print(features_matrix.shape) print(features_matrix_full.shape) return features_matrix_full, [distortion_chuck_matrix_x_full, distortion_chuck_matrix_y_full, distortion_chuck_matrix_z_full], \ [ini_coord_x, ini_coord_y, ini_coord_z], np.array(pattern_names)
def pattern_sequence(pattern_folder): features_matrix = np.zeros(64) features_matrix_dist = np.zeros(64) pattern_names = [] [ini_coord_x, ini_coord_y, ini_coord_z] = coord_nodes(pattern_folder=None, file_name="Initial-Bottom.rpt") xi, yi = np.meshgrid(np.unique(ini_coord_x), np.unique(ini_coord_z)) centroids_matrix = np.mgrid[(max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j, (max(ini_coord_x) - min(ini_coord_x)) / 16:max(ini_coord_x) - (max(ini_coord_x) - min(ini_coord_x)) / 16:8j] centroids_matrix = centroids_matrix.reshape( 2, centroids_matrix.shape[1] * centroids_matrix.shape[2]).T coord_nodes_chunck = np.array([ini_coord_x, ini_coord_y, ini_coord_z]).T distances_matrix = distance.cdist( centroids_matrix, coord_nodes_chunck.mean(axis=0)[[0, 2]].reshape(1, 2), "euclidean") distances_matrix_corner = distance.cdist( centroids_matrix, np.array([[min(ini_coord_x), min(ini_coord_x)]]), "euclidean") k = 0 for folder in glob.glob(pattern_folder + "/Mask_0/Sce*"): print(folder) pattern_names.append(folder.split(os.sep)[-1]) files = glob.glob(folder + "/*CH*rpt") if len(files) > 0: features = np.zeros(64) for file in files: CH = file.split(os.sep)[-1].split("-")[-1].split(".")[0][2:] d = file.split(os.sep)[-1].split("-")[0].split(".")[0][1:] features[int(CH) - 1] = int(d) print("Using distortion at scenario", glob.glob(folder + "/D64*")) distortions_data = open(glob.glob(folder + "/D64*rpt")[0], "r").read() distortions_coord_x = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data ).start()].split()[3:] [::6]).astype(float) distortions_coord_y = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data ).start()].split()[4:] [::6]).astype(float) distortions_coord_z = np.array(distortions_data[re.search( "-------------------------------------------------------------------------------------------------", distortions_data).end():re.search("Minimum", distortions_data ).start()].split()[5:] [::6]).astype(float) zi = griddata((ini_coord_x + distortions_coord_x, ini_coord_z + distortions_coord_z), ini_coord_y + distortions_coord_y, (xi, yi), method='cubic') distortions_coord_y = zi.flatten() distortion_chuck_x = xi.flatten().reshape(xi.flatten().shape[0], 1) distortion_chuck_y = distortions_coord_y.reshape( distortions_coord_y.shape[0], 1) distortion_chuck_z = yi.flatten().reshape(yi.flatten().shape[0], 1) if not k: features_matrix = features features_matrix_dist = distances_matrix[features.astype(int) - 1].T features_matrix_dist_corner = distances_matrix_corner[ features.astype(int) - 1].T distortion_chuck_matrix_x = distortion_chuck_x distortion_chuck_matrix_y = distortion_chuck_y distortion_chuck_matrix_z = distortion_chuck_z k = 1 else: features_matrix = np.vstack((features_matrix, features)) features_matrix_dist = np.vstack( (features_matrix_dist, distances_matrix[features.astype(int) - 1].T)) features_matrix_dist_corner = np.vstack( (features_matrix_dist_corner, distances_matrix_corner[features.astype(int) - 1].T)) distortion_chuck_matrix_x = np.hstack( (distortion_chuck_matrix_x, distortion_chuck_x)) distortion_chuck_matrix_y = np.hstack( (distortion_chuck_matrix_y, distortion_chuck_y)) distortion_chuck_matrix_z = np.hstack( (distortion_chuck_matrix_z, distortion_chuck_z)) else: print("No data found in folder", folder) print(features_matrix.shape, features_matrix_dist.shape, features_matrix_dist_corner.shape) features_matrix = np.hstack( (features_matrix, features_matrix_dist, features_matrix_dist_corner)) return features_matrix, [distortion_chuck_matrix_x, distortion_chuck_matrix_y, distortion_chuck_matrix_z], \ [ini_coord_x, ini_coord_y, ini_coord_z], np.array(pattern_names)