Example #1
0
def plot_states_matrices(
        X,
        labels,
        node_number=[6, 5, 8, 10, 4, 5, 7],
        node_networks=['DAN', 'VAN', 'SMN', 'VIS', 'AUD', 'LAN', 'DMN'],
        use_centroid=False,
        n_cols=3,
        save_fig=False,
        save_path="/media/robbis/DATA/fmri/movie_viviana",
        save_name_condition=None,
        **kwargs):
    """
    Plots the centroids in square matrix form.
    It could be used with original data and labels but also 
    with the original centroids if you set use_centroids as True. 
    
    """

    position = [sum(node_number[:i + 1]) for i in range(len(node_number))]

    if not use_centroid:
        centroids = get_centroids(X, labels)(X, labels)
        n_states = len(np.unique(labels))
    else:
        centroids = X.copy()
        n_states = X.shape[0]

    position_label = [
        -0.5 + position[i] - node_number[i] / 2.
        for i in range(len(node_number))
    ]
    n_rows = np.ceil(n_states / float(n_cols))

    fig = pl.figure()

    for i in np.arange(n_states):

        ax = fig.add_subplot(n_rows, n_cols, i + 1)

        matrix_ = copy_matrix(array_to_matrix(centroids[i]), diagonal_filler=0)
        n_nodes = matrix_.shape[0]
        ax.imshow(matrix_, interpolation='nearest', vmin=0, cmap=pl.cm.bwr)
        for _, end_network in zip(node_networks, position):
            ax.vlines(end_network - 0.5, -0.5, n_nodes - 0.5)
            ax.hlines(end_network - 0.5, -0.5, n_nodes - 0.5)

        ax.set_title('State ' + str(i + 1))
        ax.set_xticks(position_label)
        ax.set_xticklabels(node_networks)
        ax.set_yticks(position_label)
        ax.set_yticklabels(node_networks)

        #pl.colorbar()

    if save_fig:
        fname = "%s_state_%s.png" % (str(save_name_condition), str(i + 1))
        fig.savefig(os.path.join(save_path, fname))

    pl.close('all')
    return fig
Example #2
0
def plot_states_matrices(X, 
                         labels,
                         node_number=[6,5,8,10,4,5,7], 
                         node_networks=['DAN','VAN','SMN','VIS','AUD','LAN','DMN'],
                         use_centroid=False,
                         n_cols=3,
                         save_fig=False,
                         save_path="/media/robbis/DATA/fmri/movie_viviana",
                         save_name_condition=None,
                         **kwargs
                         ):
    """
    Plots the centroids in square matrix form.
    It could be used with original data and labels but also 
    with the original centroids if you set use_centroids as True. 
    
    """

    position = [sum(node_number[:i+1]) for i in range(len(node_number))]
    
    if not use_centroid:
        centroids = get_centroids(X, labels)
        n_states = len(np.unique(labels))
    else:
        centroids = X.copy()
        n_states = X.shape[0]
    
    
    position_label = [-0.5+position[i]-node_number[i]/2. for i in range(len(node_number))]
    n_rows = np.ceil(n_states / float(n_cols))
    print n_rows, n_cols
    fig = pl.figure()
        
    for i in np.arange(n_states):
        
        ax = fig.add_subplot(n_rows, n_cols, i+1)
        
        matrix_ = copy_matrix(array_to_matrix(centroids[i]), diagonal_filler=0)
        n_nodes = matrix_.shape[0]
        ax.imshow(matrix_, interpolation='nearest', vmin=0, cmap=pl.cm.inferno)
        for _, end_network in zip(node_networks, position):
            ax.vlines(end_network-0.5, -0.5, n_nodes-0.5)
            ax.hlines(end_network-0.5, -0.5, n_nodes-0.5)
        
        ax.set_title('State '+str(i+1))
        ax.set_xticks(position_label)
        ax.set_xticklabels(node_networks)
        ax.set_yticks(position_label)
        ax.set_yticklabels(node_networks)
        
        #pl.colorbar()
        
    if save_fig:
        fname = "%s_state_%s.png" % (str(save_name_condition), str(i+1))
        fig.savefig(os.path.join(save_path, fname))
    
    pl.close('all')
    return fig
Example #3
0
    def transform(self, ds):

        data = np.dstack([copy_matrix(array_to_matrix(a)) for a in ds.samples])
        data = np.hstack([d for d in data[:, :]]).T

        attr = self._edit_attr(ds, data.shape)

        ds_ = Dataset.from_wizard(data)
        ds_ = add_attributes(ds_, attr)

        return ds_
Example #4
0
def plot_seaborn(features, node_names=None, node_idx=None, **kwargs):
    from mne.viz import circular_layout
    node_angles = circular_layout(
        node_names.tolist(),
        node_names[node_idx].tolist(),
        start_pos=90,
        group_boundaries=[0, len(node_names) / 2. + 1])

    matrix = copy_matrix(array_to_matrix(features.values[0]),
                         diagonal_filler=0.)
    return plot_connectivity_seaborn(matrix,
                                     node_names=node_names,
                                     con_thresh=400,
                                     node_angles=node_angles,
                                     node_colors=sns.dark_palette(
                                         kwargs['color']))
Example #5
0
def plot_center_matrix(X, clustering, n_cluster=5, **kwargs):
    
    
    configuration = {
                     'node_number':[6,5,8,10,4,5,7],
                     'node_networks':['DAN','VAN','SMN','VIS','AUD','LAN','DMN'],
                     'save_fig':True,
                     'save_path':"/media/robbis/DATA/fmri/movie_viviana",
                     'save_name_condition':None
                     
                     }
    
    
    configuration.update(**kwargs)
    
    node_number = configuration['node_number']
    node_networks = configuration['node_networks']
    
    position = [sum(node_number[:i+1]) for i in range(len(node_number))]
    position_label = [-0.5+position[i]-node_number[i]/2. for i in range(len(node_number))]
    
    matrix_indices = np.arange(n_cluster**2).reshape(n_cluster, n_cluster) + 1
    
    fig = pl.figure(figsize=(25,20))
    for i in range(n_cluster-1):
        centers = get_centroids(X, clustering[i])
        for j, matrix in enumerate(centers):
            pos = matrix_indices[j,i+1]
            ax = fig.add_subplot(n_cluster, n_cluster, pos)
            matrix = copy_matrix(array_to_matrix(matrix), diagonal_filler=0)
            total_nodes = matrix.shape[0]
            ax.imshow(matrix, interpolation='nearest', vmin=0)
            for name, n_nodes in zip(node_networks, position):
                ax.vlines(n_nodes-0.5, -0.5, total_nodes-0.5)
                ax.hlines(n_nodes-0.5, -0.5, total_nodes-0.5)
            ax.set_xticks(position_label)
            ax.set_xticklabels(node_networks)
            ax.set_yticks(position_label)
            ax.set_yticklabels(node_networks)
            
            
    return fig
Example #6
0
def plot_center_matrix(X, clustering, n_cluster=5, **kwargs):

    configuration = {
        'node_number': [6, 5, 8, 10, 4, 5, 7],
        'node_networks': ['DAN', 'VAN', 'SMN', 'VIS', 'AUD', 'LAN', 'DMN'],
        'save_fig': True,
        'save_path': "/media/robbis/DATA/fmri/movie_viviana",
        'save_name_condition': None
    }

    configuration.update(**kwargs)

    node_number = configuration['node_number']
    node_networks = configuration['node_networks']

    position = [sum(node_number[:i + 1]) for i in range(len(node_number))]
    position_label = [
        -0.5 + position[i] - node_number[i] / 2.
        for i in range(len(node_number))
    ]

    matrix_indices = np.arange(n_cluster**2).reshape(n_cluster, n_cluster) + 1

    fig = pl.figure(figsize=(25, 20))
    for i in range(n_cluster - 1):
        centers = get_centroids(X, clustering[i])
        for j, matrix in enumerate(centers):
            pos = matrix_indices[j, i + 1]
            ax = fig.add_subplot(n_cluster, n_cluster, pos)
            matrix = copy_matrix(array_to_matrix(matrix), diagonal_filler=0)
            total_nodes = matrix.shape[0]
            ax.imshow(matrix, interpolation='nearest', vmin=0)
            for _, n_nodes in zip(node_networks, position):
                ax.vlines(n_nodes - 0.5, -0.5, total_nodes - 0.5)
                ax.hlines(n_nodes - 0.5, -0.5, total_nodes - 0.5)
            ax.set_xticks(position_label)
            ax.set_xticklabels(node_networks)
            ax.set_yticks(position_label)
            ax.set_yticklabels(node_networks)

    return fig
Example #7
0
def plot_condition_centers(X, labels, **kwargs):

    configuration = {
        'node_number': [6, 5, 8, 10, 4, 5, 7],
        'node_networks': ['DAN', 'VAN', 'SMN', 'VIS', 'AUD', 'LAN', 'DMN'],
        'save_fig': True,
        'save_path': "/media/robbis/DATA/fmri/movie_viviana",
        'save_name_condition': None,
        'vmax': 1
    }

    configuration.update(**kwargs)
    vmax = configuration['vmax']
    node_number = configuration['node_number']
    node_networks = configuration['node_networks']
    centroids = get_centroids(X, labels)
    position = [sum(node_number[:i + 1]) for i in range(len(node_number))]
    position_label = [
        -0.5 + position[i] - node_number[i] / 2.
        for i in range(len(node_number))
    ]

    n_rows = np.floor(np.sqrt(len(np.unique(labels))))
    n_cols = np.ceil(len(np.unique(labels)) / n_rows)

    fig = pl.figure(figsize=(16, 13))
    for j, matrix in enumerate(centroids):
        ax = fig.add_subplot(n_rows, n_cols, j + 1)
        matrix = copy_matrix(array_to_matrix(matrix), diagonal_filler=0)
        total_nodes = matrix.shape[0]
        ax.imshow(matrix, interpolation='nearest', vmin=0, vmax=vmax)
        for _, n_nodes in zip(node_networks, position):
            ax.vlines(n_nodes - 0.5, -0.5, total_nodes - 0.5)
            ax.hlines(n_nodes - 0.5, -0.5, total_nodes - 0.5)
        ax.set_xticks(position_label)
        ax.set_xticklabels(node_networks, rotation=45)
        ax.set_yticks(position_label)
        ax.set_yticklabels(node_networks)

    return fig
Example #8
0
def plot_condition_centers(X, labels, **kwargs):
    
    
    configuration = {
                     'node_number':[6,5,8,10,4,5,7],
                     'node_networks':['DAN','VAN','SMN','VIS','AUD','LAN','DMN'],
                     'save_fig':True,
                     'save_path':"/media/robbis/DATA/fmri/movie_viviana",
                     'save_name_condition':None,
                     'vmax':1                     
                     }
    
    
    configuration.update(**kwargs)
    vmax = configuration['vmax']
    node_number = configuration['node_number']
    node_networks = configuration['node_networks']
    centroids = get_centroids(X, labels)
    position = [sum(node_number[:i+1]) for i in range(len(node_number))]
    position_label = [-0.5+position[i]-node_number[i]/2. for i in range(len(node_number))]
    
    n_rows = np.floor(np.sqrt(len(np.unique(labels))))
    n_cols = np.ceil(len(np.unique(labels))/n_rows)
    
    fig = pl.figure(figsize=(16,13))
    for j, matrix in enumerate(centroids):
        ax = fig.add_subplot(n_rows, n_cols, j+1)
        matrix = copy_matrix(array_to_matrix(matrix), diagonal_filler=0)
        total_nodes = matrix.shape[0]
        ax.imshow(matrix, interpolation='nearest', vmin=0, vmax=vmax)
        for _, n_nodes in zip(node_networks, position):
            ax.vlines(n_nodes-0.5, -0.5, total_nodes-0.5)
            ax.hlines(n_nodes-0.5, -0.5, total_nodes-0.5)
        ax.set_xticks(position_label)
        ax.set_xticklabels(node_networks, rotation=45)
        ax.set_yticks(position_label)
        ax.set_yticklabels(node_networks)
        
    return fig
Example #9
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 #10
0
    w_array = feature_weights[med].copy()

    f_nz = f_array[np.nonzero(f_array)]

    # We selected only feature selected often
    threshold = f_nz.mean() + 0.5 * f_nz.std()
    # f_array[f_array < threshold] = 0
    # w_array[f_array < threshold] = 0 # Weights selected based on chosen features

    # zscoring weights
    w_nz = w_array[np.nonzero(w_array)]
    w_nz = (w_nz - np.mean(w_nz)) / np.std(w_nz)

    w_array[np.nonzero(w_array)] = w_nz

    f_matrix = copy_matrix(array_to_matrix(f_array, nan_mask), diagonal_filler=0)
    w_matrix = copy_matrix(array_to_matrix(w_array, nan_mask), diagonal_filler=0)

    title = "%s %s" % (med, l_)
    # f_matrix[f_matrix == 0] = np.nan
    ##################################################################################
    condition = med
    w_aggregate = aggregate_networks(w_matrix, roi_list.T[-2])

    names_lr, colors_lr, index_, coords, networks = get_atlas_info("findlab")

    _, idx = np.unique(networks, return_index=True)

    ##########################################################################

    plot_connectomics(