import numpy as np def save_samples_truncted_prob(fname, points, prob): ''' Save the visualization of sampling to a ply file. Red points represent positive predictions. Green points represent negative predictions. :param fname: File name to save :param points: [N, 3] array of points :param prob: [N, 1] array of predictions in the range [0~1] :return: ''' r = (prob > 0.5).reshape([-1, 1]) * 255 g = (prob < 0.5).reshape([-1, 1]) * 255 b = np.zeros(r.shape) to_save = np.concatenate([points, r, g, b], axis=-1) return np.savetxt(fname, to_save, fmt='%.6f %.6f %.6f %d %d %d', comments='', header=( 'ply\nformat ascii 1.0\nelement vertex {:d}\nproperty float x\nproperty float y\nproperty float z\nproperty uchar red\nproperty uchar green\nproperty uchar blue\nend_header').format( points.shape[0]) ) def save_samples_rgb(fname, points, rgb): ''' Save the visualization of sampling to a ply file. Red points represent positive predictions. Green points represent negative predictions. :param fname: File name to save :param points: [N, 3] array of points :param rgb: [N, 3] array of rgb values in the range [0~1] :return: ''' to_save = np.concatenate([points, rgb * 255], axis=-1) return np.savetxt(fname, to_save, fmt='%.6f %.6f %.6f %d %d %d', comments='', header=( 'ply\nformat ascii 1.0\nelement vertex {:d}\nproperty float x\nproperty float y\nproperty float z\nproperty uchar red\nproperty uchar green\nproperty uchar blue\nend_header').format( points.shape[0]) )