Example #1
0
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))
Example #2
0
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')