예제 #1
0
def check_voxels_around_electrodes_in_group(ct_data, output_fol, threshold,
                                            ct_header, brain_header):
    (electrodes, names, hemis, threshold) = utils.load(
        op.join(output_fol, '{}_electrodes.pkl'.format(int(threshold))))
    groups, noise = utils.load(
        op.join(output_fol, '{}_groups.pkl'.format(int(threshold))))
    elcs_group, elcs_colors = [], []
    # elcs_nei = np.zeros((len(utils.flat_list_of_lists(groups)), 3))
    elcs_nei = []
    groups_nei = []
    colors = utils.get_distinct_colors(len(groups))
    groups_names = ['{}-{}'.format(names[g[0]], names[g[-1]]) for g in groups]
    for group_ind, (group, color) in enumerate(zip(groups, colors)):
        group_voxels = fect.t1_ras_tkr_to_ct_voxels(
            [electrodes[g] for g in group], ct_header, brain_header)
        groups_elecs_nei = np.array([
            fect.get_voxel_neighbors_ct_values(ct_data, elc_voxel, r=4)
            for elc_voxel in group_voxels
        ])
        elcs_group.append(
            [np.mean(groups_elecs_nei),
             np.var(groups_elecs_nei)])
        # for elc_voxel in group_voxels:
        #     elc_nei = fect.get_voxel_neighbors_ct_values(ct_data, elc_voxel, r=2)
        #     # elcs_nei.append(elc_nei)
        #     elcs_nei.append([np.sum(elc_nei), np.mean(elc_nei), np.var(elc_nei)])
        #     elcs_group.append('{}-{}'.format(names[group[0]], names[group[-1]]))
        #     elcs_colors.append(color)
    elcs_group = np.array(elcs_group)
    groups_names = np.array(groups_names)
    utils.plot_3d_scatter(elcs_group, names=groups_names)
    # elcs_nei = np.array(elcs_nei)
    # utils.plot_3d_PCA(elcs_nei, colors=elcs_colors, legend_labels=elcs_group)
    print('asdf')
예제 #2
0
def check_voxels_around_electrodes(ct_data, output_fol, threshold, ct_header,
                                   brain_header):
    (electrodes, names, hemis, threshold) = utils.load(
        op.join(output_fol, '{}_electrodes.pkl'.format(int(threshold))))
    groups, noise = utils.load(
        op.join(output_fol, '{}_groups.pkl'.format(int(threshold))))
    ct_voxels = fect.t1_ras_tkr_to_ct_voxels(electrodes, ct_header,
                                             brain_header)
    nei_features = []
    for ct_voxel in ct_voxels:
        ct_voxel_nei = fect.get_voxel_neighbors_ct_values(ct_data,
                                                          ct_voxel,
                                                          r=4)
        nei_features.append([np.mean(ct_voxel_nei), np.std(ct_voxel_nei)])

    from sklearn import mixture
    gmm = mixture.GaussianMixture(n_components=2, covariance_type='full')
    gmm.fit(nei_features)
    Y = gmm.predict_proba(nei_features)
    centroids = gmm.means_

    nei_features = np.array(nei_features)
    fig = plt.figure()
    plt.scatter(nei_features[:, 0], nei_features[:, 1])
    plt.scatter(centroids[:, 0], centroids[:, 1], c='r')
    plt.xlabel('mean')
    plt.ylabel('std')
    plt.show()
예제 #3
0
def mask_voxels_outside_brain(elc_name, output_fol, threshold, ct_header,
                              brain, aseg, user_fol, subject_fol):
    (electrodes, names, hemis, threshold) = utils.load(
        op.join(output_fol, '{}_electrodes.pkl'.format(int(threshold))))
    # elc_ind = names.index(elc_name)
    # t1_tkras_coords = np.array([electrodes[elc_ind]])
    # ct_voxels = fect.t1_ras_tkr_to_ct_voxels(t1_tkras_coords, ct_header, brain.header)
    ct_voxels = fect.t1_ras_tkr_to_ct_voxels(electrodes, ct_header,
                                             brain.header)
    voxels = fect.mask_voxels_outside_brain(ct_voxels, ct_header, brain,
                                            user_fol, subject_fol, aseg)
    print(voxels)
예제 #4
0
def check_if_outside_pial(threshold,
                          user_fol,
                          output_fol,
                          subject_fol,
                          ct_header,
                          brain,
                          aseg,
                          sigma=2):
    (electrodes, names, hemis, threshold) = utils.load(
        op.join(output_fol, '{}_electrodes.pkl'.format(int(threshold))))
    all_voxels = fect.t1_ras_tkr_to_ct_voxels(electrodes, ct_header,
                                              brain.header)
    voxels = fect.t1_ras_tkr_to_ct_voxels(electrodes, ct_header, brain.header)
    voxels_in, voxels_in_indices = fect.mask_voxels_outside_brain(
        voxels, ct_header, brain, user_fol, subject_fol, aseg, None, sigma)
    indices_outside_brain = list(
        set(range(len(voxels))) - set(voxels_in_indices))
    outside_voxels = all_voxels[indices_outside_brain]
    outside_voxels_norm = [np.linalg.norm(v) for v in outside_voxels]
    plt.hist(outside_voxels_norm, bins=40)
    plt.show()
    print('asdf')