def test_nearest_naive(self): funs = [g.trimesh.proximity.closest_point_naive, g.trimesh.proximity.closest_point] data_points = g.deque() data_dist = g.deque() tic = [g.time.time()] for i in funs: p, d = self.check_nearest_point_function(i) data_points.append(p) data_dist.append(d) tic.append(g.time.time()) self.assertTrue(g.np.ptp(data_points, axis=0).max() < g.tol.merge) self.assertTrue(g.np.ptp(data_dist, axis=0).max() < g.tol.merge) log_msg = '\n'.join("{}: {}s".format(i, j) for i, j in zip([i.__name__ for i in funs], g.np.diff(tic))) g.log.info('Compared the following nearest point functions:\n' + log_msg)
def test_identifier(self): count = 25 meshes = g.np.append(list(g.get_meshes(10)), g.get_mesh('fixed_top.ply')) for mesh in meshes: if not mesh.is_volume: g.log.warning('Mesh %s is not watertight!', mesh.metadata['file_name']) continue g.log.info('Trying hash at %d random transforms', count) md5 = g.deque() idf = g.deque() for i in range(count): permutated = mesh.permutate.transform() permutated = permutated.permutate.tessellation() md5.append(permutated.identifier_md5) idf.append(permutated.identifier) result = g.np.array(md5) ok = (result[0] == result[1:]).all() if not ok: debug = [] for a in idf: as_int, exp = g.trimesh.util.sigfig_int( a, g.trimesh.comparison.id_sigfig) debug.append(as_int * (10**exp)) g.log.error( 'Hashes on %s differ after transform! diffs:\n %s\n', mesh.metadata['file_name'], str(g.np.array(debug, dtype=g.np.int))) raise ValueError('values differ after transform!') if md5[-1] == permutated.permutate.noise(mesh.scale / 100.0).identifier_md5: raise ValueError('Hashes on %s didn\'t change after noise!', mesh.metadata['file_name'])
def test_identifier(self): count = 25 meshes = g.np.append(list(g.get_meshes(10)), g.get_mesh('fixed_top.ply')) for mesh in meshes: if not mesh.is_volume: g.log.warning('Mesh %s is not watertight!', mesh.metadata['file_name']) continue g.log.info('Trying hash at %d random transforms', count) md5 = g.deque() idf = g.deque() for i in range(count): permutated = mesh.permutate.transform() permutated = permutated.permutate.tessellation() md5.append(permutated.identifier_md5) idf.append(permutated.identifier) result = g.np.array(md5) ok = (result[0] == result[1:]).all() if not ok: debug = [] for a in idf: as_int, exp = g.trimesh.util.sigfig_int( a, g.trimesh.comparison.id_sigfig) debug.append(as_int * (10**exp)) g.log.error('Hashes on %s differ after transform! diffs:\n %s\n', mesh.metadata['file_name'], str(g.np.array(debug, dtype=g.np.int))) raise ValueError('values differ after transform!') if md5[-1] == permutated.permutate.noise( mesh.scale / 100.0).identifier_md5: raise ValueError('Hashes on %s didn\'t change after noise!', mesh.metadata['file_name'])
def test_identifier(self): count = 25 for mesh in g.get_meshes(10): if not (mesh.is_watertight and mesh.is_winding_consistent): g.log.warning('Mesh %s is not watertight!', mesh.metadata['file_name']) continue self.assertTrue(mesh.is_watertight) g.log.info('Trying hash at %d random transforms', count) md5 = g.deque() idf = g.deque() for i in range(count): permutated = mesh.permutate.transform() permutated = permutated.permutate.tesselation() md5.append(permutated.identifier_md5) idf.append(permutated.identifier) result = g.np.array(md5) ok = (result[0] == result[1:]).all() if not ok: debug = [] for a in idf: as_int, exp = g.trimesh.util.sigfig_int( a, g.trimesh.comparison.identifier_sigfig) debug.append(as_int * (10**exp)) g.log.error( 'Hashes on %s differ after transform! diffs:\n %s\n', mesh.metadata['file_name'], str(g.np.array(debug, dtype=g.np.int))) self.assertTrue(False) if md5[-1] == permutated.permutate.noise(mesh.scale / 100.0).identifier_md5: g.log.error('Hashes on %s didn\'t change after noise!', mesh.metadata['file_name']) self.assertTrue(False)
def test_nearest_naive(self): funs = [g.trimesh.proximity.closest_point_naive, g.trimesh.proximity.closest_point] data_points = g.deque() data_dist = g.deque() tic = [g.time.time()] for i in funs: p, d = self.check_nearest_point_function(i) data_points.append(p) data_dist.append(d) tic.append(g.time.time()) assert g.np.ptp(data_points, axis=0).max() < g.tol.merge assert g.np.ptp(data_dist, axis=0).max() < g.tol.merge log_msg = '\n'.join("{}: {}s".format(i, j) for i, j in zip( [i.__name__ for i in funs], g.np.diff(tic))) g.log.info( 'Compared the following nearest point functions:\n' + log_msg)
def test_identifier(self): count = 100 for mesh in g.get_meshes(5): if not mesh.is_watertight: g.log.warning('Mesh %s is not watertight!', mesh.metadata['file_name']) continue self.assertTrue(mesh.is_watertight) g.log.info('Trying hash at %d random transforms', count) result = g.deque() for i in range(count): permutated = mesh.permutate.transform() result.append(permutated.identifier) ok = (g.np.abs(g.np.diff(result, axis=0)) < 1e-3).all() if not ok: g.log.error( 'Hashes on %s differ after transform! diffs:\n %s\n', mesh.metadata['file_name'], str(g.np.diff(result, axis=0))) self.assertTrue(ok)
def test_identifier(self): count = 100 for mesh in g.get_meshes(5): if not mesh.is_watertight: g.log.warning('Mesh %s is not watertight!', mesh.metadata['file_name']) continue self.assertTrue(mesh.is_watertight) g.log.info('Trying hash at %d random transforms', count) result = g.deque() for i in range(count): permutated = mesh.permutate.transform() result.append(permutated.identifier) ok = (g.np.abs(g.np.diff(result, axis=0)) < 1e-3).all() if not ok: g.log.error('Hashes on %s differ after transform! diffs:\n %s\n', mesh.metadata['file_name'], str(g.np.diff(result, axis=0))) self.assertTrue(ok)