Exemplo n.º 1
0
        figsize = (11, 4)
    else:
        figsize = (16, 4)

    # figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
    figure, axarr = plt.subplots(1,
                                 n_plots,
                                 sharey=True,
                                 sharex=False,
                                 figsize=figsize)
    figure.suptitle(title)
    figure.text(0.5, 0.02, x_label)

    for i, path in enumerate(paths):
        be, ge = load_npdata_from_path(path)
        plot_temporal_perfil(axarr[i], stimuli_onset(be), ge['time'])

    axarr[0].set_ylabel(y_label)
    #axarr.legend(loc=(0.0,0.73))

    # axarr[1].set_xlabel(x_label)
    plt.ylim(ymin=0)

    figure.subplots_adjust(wspace=0.1,
                           left=0.05,
                           right=.98,
                           bottom=0.1,
                           top=0.92)
    #figure.tight_layout()
    plt.show()
Exemplo n.º 2
0
def draw_single(src_dir, show=False):
    # Targets
    BlueLeft = "#011efe"
    RedLeft = "#fe0000"

    # Distractors
    GreenRight = "#49ac15"
    CianoRight = "#a8e6cf"

    ID = os.path.basename(os.path.dirname(src_dir))
    basepath = os.path.dirname(os.path.dirname(src_dir))

    print src_dir, os.path.join(basepath, "P005/2015-05-19")

    if src_dir == os.path.join(basepath, "P001/2015-05-19"):
        data = [{"eps": 0.06, "min_samples": 1000}, {"eps": 0.06, "min_samples": 1000}]

    elif src_dir == os.path.join(basepath, "P001/2015-05-27"):
        data = [
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
        ]

    elif src_dir == os.path.join(basepath, "P002/2015-05-19"):
        data = [
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
        ]

    elif src_dir == os.path.join(basepath, "P002/2015-05-20"):
        data = [
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 500},
        ]

    elif src_dir == os.path.join(basepath, "P003/2015-05-20"):
        data = [
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 800},
        ]

    elif src_dir == os.path.join(basepath, "P004/2015-05-20"):
        data = [
            {"eps": 0.06, "min_samples": 1500},
            {"eps": 0.06, "min_samples": 1500},
            {"eps": 0.06, "min_samples": 1500},
        ]

    elif src_dir == os.path.join(basepath, "P005/2015-05-19"):
        data = [
            {"eps": 0.08, "min_samples": 500},
            {"eps": 0.07, "min_samples": 500},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
        ]

    elif src_dir == os.path.join(basepath, "P006/2015-05-25"):
        data = [
            {"eps": 0.065, "min_samples": 1700},
            {"eps": 0.065, "min_samples": 1300},
            {"eps": 0.065, "min_samples": 1200},
        ]

    elif src_dir == os.path.join(basepath, "P007/2015-05-25"):
        data = [
            {"eps": 0.06, "min_samples": 1200},
            {"eps": 0.06, "min_samples": 1200},
            {"eps": 0.06, "min_samples": 1200},
        ]

    elif src_dir == os.path.join(basepath, "P008/2015-05-26"):
        data = [
            {"eps": 0.06, "min_samples": 1200},
            {"eps": 0.06, "min_samples": 1200},
            {"eps": 0.06, "min_samples": 1200},
        ]

    elif src_dir == os.path.join(basepath, "P009/2015-05-26"):
        data = [
            {"eps": 0.06, "min_samples": 1700},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
            {"eps": 0.06, "min_samples": 1000},
        ]

    elif src_dir == os.path.join(basepath, "P010/2015-05-26"):
        data = [
            {"eps": 0.06, "min_samples": 600},
            {"eps": 0.06, "min_samples": 600},
            {"eps": 0.06, "min_samples": 600},
            {"eps": 0.06, "min_samples": 600},
        ]

    paths = sorted(glob(os.path.join(src_dir, "0*")))
    for i, path in enumerate(paths):
        data_folder = os.path.join(src_dir, path)
        beha_events_path = os.path.join(data_folder, "behavioral_events.txt")
        gaze_events_path = os.path.join(data_folder, "gaze_coordenates_on_screen.txt")

        gaze_data = np.genfromtxt(
            gaze_events_path,
            delimiter="\t",
            missing_values=["NA"],
            filling_values=None,
            names=True,
            autostrip=True,
            dtype=None,
        )

        data[i]["beha_data"] = np.genfromtxt(
            beha_events_path,
            delimiter="\t",
            missing_values=["NA"],
            filling_values=None,
            names=True,
            autostrip=True,
            dtype=None,
        )

        # DBSCAN expects data with shape (-1,2), we need to transpose ours first
        data[i]["src_xy"] = np.array([gaze_data["x_norm"], gaze_data["y_norm"]]).T

        data[i]["dbsc"] = categorize_points(data[i]["src_xy"], data[i]["eps"], data[i]["min_samples"])
        data[i]["points_categorized"] = plot_dbscan(data[i]["src_xy"], data[i]["dbsc"])

        data[i]["masks"] = categorize_masks(data[i]["src_xy"], data[i]["dbsc"])

        data[i]["src_timestamps"] = gaze_data["time"]
        data[i]["time_categorized"] = categorize_timestamps(data[i]["src_timestamps"], data[i]["dbsc"])

    x_label = "Ciclo"
    y_label = "dir. < Taxa (gaze/s) > esq."
    title = "Particip. " + ID + ": Taxa de movim. oculares durante cada cor"

    n_plots = len(data)
    if n_plots == 1:
        figsize = (4, 4)
    elif n_plots == 2:
        figsize = (8, 4)
    elif n_plots == 3:
        figsize = (12, 4)
    else:
        figsize = (14, 4)

        # figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
    figure, axarr = plt.subplots(1, n_plots, sharey=True, sharex=False, figsize=figsize)
    figure.suptitle(title)
    figure.text(0.5, 0.02, x_label)

    # look rate at left
    # look rate at right

    for i, d in enumerate(data):
        turnover_count = 0
        turnover = [a for a, b in zip(d["masks"]["cluster_0"], d["masks"]["cluster_1"]) if a or b]
        for c, n in zip(turnover, turnover[1:]):
            if c != n:
                turnover_count += 1
        print "\n", "turnover_count:", turnover_count

        left_right_xy = []
        left_right_timestamps = []
        for time, points in zip(d["time_categorized"].iteritems(), d["points_categorized"].iteritems()):
            _, xy = points
            time_key, timestamps = time
            if len(timestamps) > 0 and "cluster" in time_key:
                left_right_timestamps.append(timestamps)
                left_right_xy.append(xy)

        if np.mean(left_right_xy[0][0]) > np.mean(left_right_xy[1][0]):
            left_right_xy = [left_right_xy[1], left_right_xy[0]]
            left_right_timestamps = [left_right_timestamps[1], left_right_timestamps[0]]

            # all stimuli, left and right
            # plot_temporal_perfil(axarr[i],all_stimuli(data[i]['beha_data']), left_right_timestamps,"positions")

            # v+v, v+c, a+v, a+c
        plot_temporal_perfil(
            axarr[i], color_pair(data[i]["beha_data"], 0), left_right_timestamps[0], "pair", c1=RedLeft, nsize=0
        )
        plot_temporal_perfil(
            axarr[i],
            color_pair(data[i]["beha_data"], 0),
            left_right_timestamps[1],
            "pair",
            c1=GreenRight,
            nsize=0,
            doreversed=True,
        )

        plot_temporal_perfil(
            axarr[i], color_pair(data[i]["beha_data"], 1), left_right_timestamps[0], "pair", c1=RedLeft, nsize=1
        )
        plot_temporal_perfil(
            axarr[i],
            color_pair(data[i]["beha_data"], 1),
            left_right_timestamps[1],
            "pair",
            c1=CianoRight,
            nsize=1,
            doreversed=True,
        )

        plot_temporal_perfil(
            axarr[i], color_pair(data[i]["beha_data"], 2), left_right_timestamps[0], "pair", c1=BlueLeft, nsize=2
        )
        plot_temporal_perfil(
            axarr[i],
            color_pair(data[i]["beha_data"], 2),
            left_right_timestamps[1],
            "pair",
            c1=CianoRight,
            nsize=2,
            doreversed=True,
        )

        plot_temporal_perfil(
            axarr[i], color_pair(data[i]["beha_data"], 3), left_right_timestamps[0], "pair", c1=BlueLeft, nsize=3
        )
        plot_temporal_perfil(
            axarr[i],
            color_pair(data[i]["beha_data"], 3),
            left_right_timestamps[1],
            "pair",
            c1=GreenRight,
            nsize=3,
            doreversed=True,
        )

        # all stimuli (red blue), left
        # plot_temporal_perfil(axarr[i],stimuli_onset(data[i]['beha_data']), left_right_timestamps[0],'colors', c1=RedLeft, c2=BlueLeft)

        # all stimuli (red blue), right
        # plot_temporal_perfil(axarr[i],stimuli_onset(data[i]['beha_data']), left_right_timestamps[1],"colors",c1=RedRight,c2=BlueRight, doreversed=True)
    ticks = [30, 20, 10, 0, 10, 20, 30]
    axarr[0].set_yticklabels(labels=ticks)
    # ([x for x in range(-30,31)],)

    plt.ylim(ymin=-30)
    plt.ylim(ymax=30)

    # figure.subplots_adjust(wspace=0.1,left=0.05, right=.98,bottom=0.1,top=0.92)
    axarr[0].set_ylabel(y_label)
    figure.tight_layout()
    if show:
        plt.show()
	n_plots = len(paths)
	if n_plots == 1:
		figsize = (6, 4)
	elif n_plots == 2:
		figsize = (11, 4)
	else:
		figsize = (16, 4)

	# figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
	figure, axarr = plt.subplots(1, n_plots, sharey=True, sharex=False, figsize=figsize) 
	figure.suptitle(title);
	figure.text(0.5, 0.02, x_label)

	for i, path in enumerate(paths):
		be, fx = load_npdata_from_path(path)
		plot_temporal_perfil(axarr[i], stimuli_onset(be), fx['start_time'])

		#axarr.set_ylabel(y_label)
		#axarr.legend(loc=(0.0,0.73))

		# axarr[1].set_xlabel(x_label)
	plt.ylim(ymin = 0)

	figure.subplots_adjust(wspace=0.1,left=0.05, right=.98,bottom=0.1,top=0.92)
	# figure.tight_layout()
	
	plt.show()

  # print all column names
  # for key in be.dtype.names:
  #   print key
Exemplo n.º 4
0
def draw_single(src_dir, show=False):
    # Targets
    BlueLeft = '#011efe'
    RedLeft = '#fe0000'

    # Distractors
    GreenRight = '#49ac15'
    CianoRight = '#a8e6cf'

    ID = os.path.basename(os.path.dirname(src_dir))
    basepath = os.path.dirname(os.path.dirname(src_dir))

    print src_dir, os.path.join(basepath, 'P005/2015-05-19')

    if src_dir == os.path.join(basepath, 'P001/2015-05-19'):
        data = [{
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }]

    elif src_dir == os.path.join(basepath, 'P001/2015-05-27'):
        data = [{
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }]

    elif src_dir == os.path.join(basepath, 'P002/2015-05-19'):
        data = [{
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }]

    elif src_dir == os.path.join(basepath, 'P002/2015-05-20'):
        data = [{
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 500
        }]

    elif src_dir == os.path.join(basepath, 'P003/2015-05-20'):
        data = [{
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 800
        }]

    elif src_dir == os.path.join(basepath, 'P004/2015-05-20'):
        data = [{
            'eps': 0.06,
            'min_samples': 1500
        }, {
            'eps': 0.06,
            'min_samples': 1500
        }, {
            'eps': 0.06,
            'min_samples': 1500
        }]

    elif src_dir == os.path.join(basepath, 'P005/2015-05-19'):
        data = [{
            'eps': 0.08,
            'min_samples': 500
        }, {
            'eps': 0.07,
            'min_samples': 500
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }]

    elif src_dir == os.path.join(basepath, 'P006/2015-05-25'):
        data = [{
            'eps': 0.065,
            'min_samples': 1700
        }, {
            'eps': 0.065,
            'min_samples': 1300
        }, {
            'eps': 0.065,
            'min_samples': 1200
        }]

    elif src_dir == os.path.join(basepath, 'P007/2015-05-25'):
        data = [{
            'eps': 0.06,
            'min_samples': 1200
        }, {
            'eps': 0.06,
            'min_samples': 1200
        }, {
            'eps': 0.06,
            'min_samples': 1200
        }]

    elif src_dir == os.path.join(basepath, 'P008/2015-05-26'):
        data = [{
            'eps': 0.06,
            'min_samples': 1200
        }, {
            'eps': 0.06,
            'min_samples': 1200
        }, {
            'eps': 0.06,
            'min_samples': 1200
        }]

    elif src_dir == os.path.join(basepath, 'P009/2015-05-26'):
        data = [{
            'eps': 0.06,
            'min_samples': 1700
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }, {
            'eps': 0.06,
            'min_samples': 1000
        }]

    elif src_dir == os.path.join(basepath, 'P010/2015-05-26'):
        data = [{
            'eps': 0.06,
            'min_samples': 600
        }, {
            'eps': 0.06,
            'min_samples': 600
        }, {
            'eps': 0.06,
            'min_samples': 600
        }, {
            'eps': 0.06,
            'min_samples': 600
        }]

    paths = sorted(glob(os.path.join(src_dir, '0*')))
    for i, path in enumerate(paths):
        data_folder = os.path.join(src_dir, path)
        beha_events_path = os.path.join(data_folder, "behavioral_events.txt")
        gaze_events_path = os.path.join(data_folder,
                                        'gaze_coordenates_on_screen.txt')

        gaze_data = np.genfromtxt(gaze_events_path,
                                  delimiter='\t',
                                  missing_values=['NA'],
                                  filling_values=None,
                                  names=True,
                                  autostrip=True,
                                  dtype=None)

        data[i]['beha_data'] = np.genfromtxt(beha_events_path,
                                             delimiter="\t",
                                             missing_values=["NA"],
                                             filling_values=None,
                                             names=True,
                                             autostrip=True,
                                             dtype=None)

        # DBSCAN expects data with shape (-1,2), we need to transpose ours first
        data[i]['src_xy'] = np.array(
            [gaze_data['x_norm'], gaze_data['y_norm']]).T

        data[i]['dbsc'] = categorize_points(data[i]['src_xy'], data[i]['eps'],
                                            data[i]['min_samples'])
        data[i]['points_categorized'] = plot_dbscan(data[i]['src_xy'],
                                                    data[i]['dbsc'])

        data[i]['masks'] = categorize_masks(data[i]['src_xy'], data[i]['dbsc'])

        data[i]['src_timestamps'] = gaze_data['time']
        data[i]['time_categorized'] = categorize_timestamps(
            data[i]['src_timestamps'], data[i]['dbsc'])

    x_label = 'Ciclo'
    y_label = 'dir. < Taxa (gaze/s) > esq.'
    title = 'Particip. ' + ID + ': Taxa de movim. oculares durante cada cor'

    n_plots = len(data)
    if n_plots == 1:
        figsize = (4, 4)
    elif n_plots == 2:
        figsize = (8, 4)
    elif n_plots == 3:
        figsize = (12, 4)
    else:
        figsize = (14, 4)

    # figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
    figure, axarr = plt.subplots(1,
                                 n_plots,
                                 sharey=True,
                                 sharex=False,
                                 figsize=figsize)
    figure.suptitle(title)
    figure.text(0.5, 0.02, x_label)

    # look rate at left
    # look rate at right

    for i, d in enumerate(data):
        turnover_count = 0
        turnover = [
            a for a, b in zip(d['masks']['cluster_0'], d['masks']['cluster_1'])
            if a or b
        ]
        for c, n in zip(turnover, turnover[1:]):
            if c != n:
                turnover_count += 1
        print '\n', 'turnover_count:', turnover_count

        left_right_xy = []
        left_right_timestamps = []
        for time, points in zip(d['time_categorized'].iteritems(),
                                d['points_categorized'].iteritems()):
            _, xy = points
            time_key, timestamps = time
            if len(timestamps) > 0 and 'cluster' in time_key:
                left_right_timestamps.append(timestamps)
                left_right_xy.append(xy)

        if np.mean(left_right_xy[0][0]) > np.mean(left_right_xy[1][0]):
            left_right_xy = [left_right_xy[1], left_right_xy[0]]
            left_right_timestamps = [
                left_right_timestamps[1], left_right_timestamps[0]
            ]

        # all stimuli, left and right
        #plot_temporal_perfil(axarr[i],all_stimuli(data[i]['beha_data']), left_right_timestamps,"positions")

        # v+v, v+c, a+v, a+c
        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 0),
                             left_right_timestamps[0],
                             'pair',
                             c1=RedLeft,
                             nsize=0)
        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 0),
                             left_right_timestamps[1],
                             'pair',
                             c1=GreenRight,
                             nsize=0,
                             doreversed=True)

        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 1),
                             left_right_timestamps[0],
                             'pair',
                             c1=RedLeft,
                             nsize=1)
        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 1),
                             left_right_timestamps[1],
                             'pair',
                             c1=CianoRight,
                             nsize=1,
                             doreversed=True)

        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 2),
                             left_right_timestamps[0],
                             'pair',
                             c1=BlueLeft,
                             nsize=2)
        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 2),
                             left_right_timestamps[1],
                             'pair',
                             c1=CianoRight,
                             nsize=2,
                             doreversed=True)

        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 3),
                             left_right_timestamps[0],
                             'pair',
                             c1=BlueLeft,
                             nsize=3)
        plot_temporal_perfil(axarr[i],
                             color_pair(data[i]['beha_data'], 3),
                             left_right_timestamps[1],
                             'pair',
                             c1=GreenRight,
                             nsize=3,
                             doreversed=True)

        # all stimuli (red blue), left
        # plot_temporal_perfil(axarr[i],stimuli_onset(data[i]['beha_data']), left_right_timestamps[0],'colors', c1=RedLeft, c2=BlueLeft)

        # all stimuli (red blue), right
        # plot_temporal_perfil(axarr[i],stimuli_onset(data[i]['beha_data']), left_right_timestamps[1],"colors",c1=RedRight,c2=BlueRight, doreversed=True)
    ticks = [30, 20, 10, 0, 10, 20, 30]
    axarr[0].set_yticklabels(labels=ticks)
    #([x for x in range(-30,31)],)

    plt.ylim(ymin=-30)
    plt.ylim(ymax=30)

    # figure.subplots_adjust(wspace=0.1,left=0.05, right=.98,bottom=0.1,top=0.92)
    axarr[0].set_ylabel(y_label)
    figure.tight_layout()
    if show:
        plt.show()
        figsize = (11, 4)
    else:
        figsize = (16, 4)

    # figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
    figure, axarr = plt.subplots(1,
                                 n_plots,
                                 sharey=True,
                                 sharex=False,
                                 figsize=figsize)
    figure.suptitle(title)
    figure.text(0.5, 0.02, x_label)

    for i, path in enumerate(paths):
        be, fx = load_npdata_from_path(path)
        plot_temporal_perfil(axarr[i], stimuli_onset(be), fx['start_time'])

        #axarr.set_ylabel(y_label)
        #axarr.legend(loc=(0.0,0.73))

        # axarr[1].set_xlabel(x_label)
    plt.ylim(ymin=0)

    figure.subplots_adjust(wspace=0.1,
                           left=0.05,
                           right=.98,
                           bottom=0.1,
                           top=0.92)
    # figure.tight_layout()

    plt.show()
	n_plots = len(paths)
	if n_plots == 1:
		figsize = (6, 4)
	elif n_plots == 2:
		figsize = (11, 4)
	else:
		figsize = (16, 4)

	# figure.add_axes([0.1, 0.1, 0.8, 0.8], frameon = 0)
	figure, axarr = plt.subplots(1, n_plots, sharey=True, sharex=False, figsize=figsize) 
	figure.suptitle(title);
	figure.text(0.5, 0.02, x_label)

	for i, path in enumerate(paths):
		be, ge = load_npdata_from_path(path)
		plot_temporal_perfil(axarr[i], stimuli_onset(be), ge['time'])

	axarr[0].set_ylabel(y_label)
	#axarr.legend(loc=(0.0,0.73))

	# axarr[1].set_xlabel(x_label)
	plt.ylim(ymin = 0)

	figure.subplots_adjust(wspace=0.1,left=0.05, right=.98,bottom=0.1,top=0.92)
	#figure.tight_layout()
	plt.show()

	# print all column names
	# for key in be.dtype.names:
	#   print key