def plot_states_matrices(X, labels, save_path, condition_label, node_number=[6,5,8,10,4,5,7], node_networks = ['DAN','VAN','SMN','VIS','AUD','LAN','DMN'], use_centroid=False, ): position = [sum(node_number[:i+1]) for i in range(len(node_number))] if not use_centroid: centroids = get_centroids(X, labels) total_nodes = len(np.unique(labels)) else: centroids = X.copy() total_nodes = X.shape[0] position_label = [-0.5+position[i]-node_number[i]/2. for i in range(len(node_number))] for i in np.arange(total_nodes): fig = pl.figure() matrix_ = copy_matrix(array_to_matrix(centroids[i])) total_nodes = matrix_.shape[0] pl.imshow(matrix_, interpolation='nearest', vmin=0, vmax=1) for name, n_nodes in zip(node_networks, position): pl.vlines(n_nodes-0.5, -0.5, total_nodes-0.5) pl.hlines(n_nodes-0.5, -0.5, total_nodes-0.5) pl.title('State '+str(i+1)) pl.xticks(position_label, node_networks) pl.yticks(position_label, node_networks) pl.colorbar() fname = "%s_state_%s.png" % (condition_label, str(i+1)) pl.savefig(os.path.join(save_path, fname))
label_fname = '/media/robbis/DATA/fmri/movie_viviana/clustering_labels_2to30k_%s_all_sub_speed.obj' label_fname = os.path.join(path,"clustering_labels_%s_maxk_15_speed_masked.pyobj") dict_centroids = dict() conditions = ['MOVIE', 'SCRAMBLE', 'REST'] for condition in conditions: data_, n_roi = get_data(fname % (condition)) subj_min_speed, subj_speed = get_min_speed_arguments(data_) hist_arg = get_extrema_histogram(subj_min_speed, data_.shape[1]) X = data_[subj_min_speed] clustering_ = pickle.load(file(label_fname % (condition.lower()), 'r')) centroid_ = get_centroids(X, clustering_[3]) # Five centroids centroid_ = centroid_[order[condition],:] # Similarity reorder dict_centroids[condition.lower()] = centroid_ state_dynamics = fit_states(data_, centroid_, distance=euclidean) state_dynamics = np.array(state_dynamics) state_dynamics = np.nan_to_num(state_dynamics) #state_frequency = get_state_frequencies(state_dynamics) plot_dynamics(state_dynamics, condition, path) #plot_frequencies(state_frequency, condition, path) state_centroids = fit_centroids(data_, centroid_) state_centroids = state_centroids[:,np.newaxis,:]+1 plot_dynamics(state_centroids, condition, path, suffix='_kmeans')