def make_video_of_tsne_iterations(iterations, video_dir, data_file_name='interim_{:0>6}.dat', video_file_name='tsne_video.mp4', figsize=(15, 15), dpi=200, fps=30, movie_metadata=None, labels_dict=None, cm=None, cm_remapping=None, subtitle=None, label_name='Label', legent_on=True, label_array=None, sizes=None, markers=None, color=None, max_screen=False): iters = np.arange(iterations) FFMpegWriter = animation.writers['ffmpeg'] metadata = None if movie_metadata: metadata = movie_metadata writer = FFMpegWriter(fps=fps, bitrate=-1, metadata=metadata) if cm is None: cm = plt.cm.Dark2 fig = plt.figure(figsize=figsize, dpi=dpi) ax = fig.add_subplot(111) with writer.saving(fig, join(video_dir, video_file_name), dpi): for it in iters: ax.cla() tsne = TSNE.load_tsne_result(video_dir, data_file_name.format(it)) tsne = np.transpose(tsne) plot_tsne(tsne, labels_dict=labels_dict, cm=cm, cm_remapping=cm_remapping, subtitle=subtitle, label_name=label_name, legent_on=legent_on, label_array=label_array, axes=ax, sizes=sizes, markers=markers, color=color, max_screen=max_screen) min_x = np.min(tsne[0, :]) max_x = np.max(tsne[0, :]) min_y = np.min(tsne[1, :]) max_y = np.max(tsne[1, :]) range_x = np.max(np.abs([min_x, max_x])) range_y = np.max(np.abs([min_y, max_y])) plt.ylim([-range_y, range_y]) plt.xlim([-range_x, range_x]) writer.grab_frame()
gpu_mem = 0.9 eta = 200 early_exaggeration = 4.0 seed = 400000 verbose = 3 randseed = 0 tsne = tsne_spikes.t_sne_spikes(kwx_file_path, path_to_save_tmp_data=path_to_save_tmp_data, hdf5_dir_to_pca=r'channel_groups/1/features_masks', mask_data=True, perplexity=perplexity, theta=theta, iterations=iterations, gpu_mem=gpu_mem, seed=seed, eta=eta, early_exaggeration=early_exaggeration, verbose=verbose, indices_of_spikes_to_tsne=range(spikes_used), randseed=randseed) # Load t-sne results tsne = TSNE.load_tsne_result(results_dir, 'result_tsne40K_com46k_p500_it1k_th05_eta200.dat') tsne = np.transpose(tsne) tsne = np.load(join(results_dir, 't_sne_results_s130k_100per_200lr_02theta.npy')) # 2D plot pf.plot_tsne(tsne, labels_dict=spikes_labeled_dict, subtitle='T-sne of first 130k spikes from Synthetic Data', label_name='"Cell" No', cm=plt.cm.jet, markers=['.', '^'], sizes=[3, 20]) pf.plot_tsne(tsne, labels_dict=None, subtitle='T-sne of 86000 spikes from Synthetic Data, not labeled', label_name=None) #-------------------------------------------------------------------------------------- # CHECK QUALITY OF FIT # 1) DBSCAN def fit_dbscan(data, eps, min_samples, show=True, juxta_cluster_indices_grouped=None, threshold_legend=None):
print("Scikit t-sne took {} seconds, ({} minutes), for {} spikes".format(t1-t0, (t1-t0)/60, up_to_extra_spike)) # save the python scikit generated t-sne results threshold = 5.5 file_name = r'D:\Data\George\Projects\SpikeSorting\Joana_Paired_128ch\2015-09-03\Analysis\t_tsne_ivm_data_{}sp_{}per_{}ee_{}lr_{}tp_{}thres.pkl'\ .format(len(indices_of_data_for_tsne), perplexity, early_exaggeration, learning_rate, number_of_time_points, threshold) file = open(file_name, 'bw') pickle.dump((ivm_data_filtered, t_tsne, juxta_cluster_indices_grouped, perplexity, early_exaggeration, learning_rate), file) file.close() tsne_bhcuda.save_data_for_tsne(data_for_tsne, r'E:\George\SourceCode\Repos\t_sne_bhcuda\bin\windows', 'data.dat', theta=0.6, perplexity=50, eta=200, no_dims=2, iterations=1000, seed=0, gpu_mem=0.8, randseed=-1) t_tsne = np.transpose(tsne_bhcuda.load_tsne_result( r'D:\Data\George\Projects\SpikeSorting\Joana_Paired_128ch\2015-09-03\Analysis\klustakwik\threshold_6_5std', 'result_final_allspikes.dat')) # T-sne with my conda package path = r'D:\Data\George\Projects\SpikeSorting\Joana_Paired_128ch\2015-09-03\Analysis\klustakwik\threshold_6_5std' kwx_file_path = os.path.join(path, r'threshold_6_5std.kwx') video = os.path.join(path, r'video') indices_of_data_for_tsne = None #range(40000) seed = 0 perplexity = 100.0 theta = 0.2 learning_rate = 200.0 iterations = 5000 gpu_mem = 0.2