Exemplo n.º 1
0
    def __init__(self, default_config={}):
        self._load_config(default_config)
        design.defaults.experiment_text_size = self.config.getint('GENERAL', 'experiment_text_size')
        design.Experiment.__init__(self, _('title'))
        control.set_develop_mode(self._dev_mode)

        if self.config.has_option('GENERAL', 'window_size') and not self._dev_mode:
            control.defaults.window_size = self.config.gettuple(
                'GENERAL', 'window_size', assert_length=2)
        if self.config.has_option('GENERAL', 'fullscreen') and not self._dev_mode:
            control.defaults.window_mode = self.config.getboolean('GENERAL', 'fullscreen')
        control.initialize(self)
        if self._dev_mode:
            self.mouse.show_cursor()

        self.expyriment_version = expyriment_version
        self.python_version = python_version

        self.trialdata = None
        self.trial_log = None
        self.block_log = None
        self.by_block_vars = []
        self.experiment_log = None
        self.dev_log = None

        self.screen.dpi = self._get_dpi()
def client(server_ip):
    # t : test connect
    # q : quit client
    # space : enter

    control.set_develop_mode(True)
    control.defaults.audiosystem_autostart = False
    exp = control.initialize()

    udp_connection = UDPConnection()
    print(udp_connection)

    if not udp_connection.connect_peer(server_ip):
        print("error connecting to peer")
        exit()

    stimuli.TextScreen(
        "connected to " + udp_connection.peer_ip,
        "\nSPACE: send text\nT: trigger test\nQ: quit").present()

    c = Clock()

    while True:
        key = exp.keyboard.check()
        if key == ord("q"):
            break
        elif key == misc.constants.K_SPACE:
            text = io.TextInput().get()
            stimuli.BlankScreen().present()
            print("send: {} {}".format(c.time, text))
            udp_connection.send(text)
        elif key == ord("t"):
            times = []
            for cnt in range(20):
                stimuli.TextLine("ping test " + str(cnt)).present()
                c.reset_stopwatch()
                ok, time = udp_connection.ping(timeout=1)
                print("answer received in {} ms".format(c.stopwatch_time))
                times.append(time)
                c.wait(100)
            stimuli.BlankScreen().present()
            print(times)

        feedback = udp_connection.poll()
        if feedback is not None:
            print("received: {} {}".format(c.time, feedback))

    udp_connection.unconnect_peer()
Exemplo n.º 3
0
from expyriment import design, control, stimuli, io
from expyriment.misc import constants
from musicsheet import MusicSheet, Notes, Feedback
from settings import Setup
from keyboard import PianoKeyboard
from timer import Timer
import random
from mysql import *
'''
Custom settings
'''
# switch off opengl to avoid screen refresh sync
control.defaults.open_gl = False

# Fast open close and windowed; default: False
control.set_develop_mode(True)
io.defaults.outputfile_time_stamp = True
#control.defaults.initialize_delay = 0
'''
Prepare Training
'''
#Initialize experiment and load setup
exp = design.Experiment(name="MusicTraining")
control.initialize(exp)
setup = Setup(screen_size=exp.screen.size)
setup.make_selection(use_all_notes=False)
exp.mouse.show_cursor()

# Create list of musicsheet objects
musicsheet = dict()
for clef in setup.clef:
Exemplo n.º 4
0
        """

        if position is None:
            position = defaults.dot_position
        if colour is None:
            colour = defaults.dot_colour
        Circle.__init__(self, diameter=radius * 2, colour=colour, position=position)

    def is_overlapping(self, other, minimal_gap=0):
        """DEPRECATED METHOD: Please use 'overlapping_with_circle'"""
        return self.overlapping_with_circle(other, minimal_gap)

    def is_center_inside(self, other):
        """DEPRECATED METHOD: Please use 'center_inside_circle'"""
        return self.center_inside_circle(other)

    def is_inside(self, other):
        """DEPRECATED METHOD: Please use 'inside_circle'"""
        return self.inside_circle(other)


if __name__ == "__main__":
    from expyriment import control

    control.set_develop_mode(True)
    defaults.event_logging = 0
    exp = control.initialize()
    dot = Dot(radius=100)
    dot.present()
    exp.clock.wait(1000)
Exemplo n.º 5
0
from expyriment import design, control, stimuli, misc, io
import pandas as pd


def load_df(name):
    df = pd.read_csv(name, sep=';', skip_blank_lines=True, index_col='Index')
    df = df.dropna(subset=['Exp'])
    for column in ['Item', 'Condition', 'List_Num']:
        df[column] = df[column].astype('Int8')
    df['is_pract'] = df['is_pract'].astype('bool')
    df.index = df.index.astype('Int32')
    return df


control.set_develop_mode(False)
control.defaults.window_mode = True
control.defaults.window_size = [800, 600]
control.defaults.initialize_delay = 0

exp = design.Experiment(name="My Experiment")
control.initialize(exp)

conditions = load_df("../bws_study.csv").dropna().groupby("Condition")
print() #[data for nr, data in conditions]
for nr, data in conditions:
    block = design.Block(name="Condition" + str(int(nr)))
    block.set_factor("Condition", nr)
    for nr, sents in data.iterrows():
        t = design.Trial()
        t.set_factor("ItemNum", sents["Item"])
        for sent in ["S1", "S2", "S3", "S4", "S5", "S6", "S7"]:
Exemplo n.º 6
0
#!/usr/bin/env python

"""
A parity judgment task to assess the SNARC effect.

See e.g.:
Gevers, W., Reynvoet, B., & Fias, W. (2003). The mental representation of
ordinal sequences is spatially organized. Cognition, 87(3), B87-95.

"""

from expyriment import design, control, stimuli
from expyriment.misc import constants


control.set_develop_mode(False)

########### DESIGN ####################
exp = design.Experiment(name="SNARC")

# Design: 2 response mappings x 8 stimuli x 10 repetitions
for response_mapping in ["left_odd", "right_odd"]:
    block = design.Block()
    block.set_factor("mapping", response_mapping)
    #add trials to block
    for digit in [1, 2, 3, 4, 6, 7, 8, 9]:
        trial = design.Trial()
        trial.set_factor("digit", digit)
        block.add_trial(trial, copies=10)
    block.shuffle_trials()
    exp.add_block(block)
Exemplo n.º 7
0
#! /usr/bin/env python
# Time-stamp: <2021-04-05 07:55:39 [email protected]>
""" Display Kanisza illusory square

(see https://openi.nlm.nih.gov/detailedresult?img=PMC4211395_fnhum-08-00854-g0001&req=4 )

"""

from expyriment import design, control, stimuli

exp = design.Experiment(name="Kanisza square",
                        background_colour=(127, 127, 127))
control.set_develop_mode(on=True)  # Comment out for full screen experiment
control.initialize(exp)
control.start(skip_ready_screen=True)

width, height = 200, 200
left = -width // 2
right = width // 2
top = height // 2
bottom = -height // 2

stimuli.Circle(50, (0, 0, 0), 0, (left, top)).present(clear=True, update=False)
stimuli.Circle(50, (0, 0, 0), 0, (right, top)).present(clear=False,
                                                       update=False)
stimuli.Circle(50, (0, 0, 0), 0, (left, bottom)).present(clear=False,
                                                         update=False)
stimuli.Circle(50, (0, 0, 0), 0, (right, bottom)).present(clear=False,
                                                          update=False)
stimuli.Rectangle((width, height), (127, 127, 127), 0, None, None,
                  (0, 0)).present(clear=False, update=True)
Exemplo n.º 8
0
    exp.keyboard.wait(misc.constants.K_SPACE)

    for i in range(nb_block_r):
        block_name = "real" + str(i + 1)
        blocks(nb_el_block_r, nb_probes_r, exp, block_name)
        instructions = stimuli.TextLine(
            text="Ready for the next trial? Press spacebar")
        instructions.present()
        exp.keyboard.wait(misc.constants.K_SPACE)

    control.end(goodbye_text="Thank you very much...", goodbye_delay=2000)


## initialize xp
exp = design.Experiment(name="SART")
control.set_develop_mode(
    on=False)  ## Set develop mode. Comment for real experiment
control.initialize(exp)
control.start()
exp.data_variable_names = ["digit", "btn", "rt", "error", "block_name"]

#creation probe files
data_probe_name = ['probe_data_easy', str(exp.subject)]
data_file_name = ['probe_data_easy', str(exp.subject), '.txt']
globals()[''.join(data_probe_name)] = open(''.join(data_file_name), "w")
globals()[''.join(data_probe_name)].write(
    'block_number, trial_number, relatedness\
, rt_rel, control, rt_con\n')
globals()[''.join(data_probe_name)].close

main(exp)
Exemplo n.º 9
0
        id, pos, _rt = exp.mouse.wait_press()

        if N_back.overlapping_with_position(pos):
            exp.mouse.hide_cursor()
            return 'n_back', exp
        elif Stroop.overlapping_with_position(pos):
            exp.mouse.hide_cursor()
            return 'stroop', exp
        elif exit.overlapping_with_position(pos):
            exp.mouse.hide_cursor()
            return 'exit', exp


info = StreamInfo('MyMarkerStream', 'Markers', 1, 0, 'string', 'myuidw43536')
outlet = StreamOutlet(info)
control.set_develop_mode(use_develop_mode)
exp = control.initialize()
control.start(exp, skip_ready_screen=True)

start_new_exp = False
while True:
    if start_new_exp == True:
        exp = control.initialize()
        control.start(exp, skip_ready_screen=True)

    task, exp = ask_for_task()
    if task == "n_back":
        nBack = runNbackTask(exp.screen.window_size[1], exp.screen.window_size[0], exp,\
                     str(exp.data._subject), outlet)
        start_new_exp = nBack.start_run()
Exemplo n.º 10
0
#!/usr/bin/env python
"""
Minimal skeleton for an expyriment script

See <https://docs.expyriment.org/Tutorial.html>

"""

from expyriment import design, control, stimuli

exp = design.Experiment(name="Experiment")
control.set_develop_mode(
    on=True)  ## Set develop mode. Comment out for actual experiment

control.initialize(exp)

### insert here some code to generate the stimuli

control.start()

### insert here some code to present the stimuli and record responses

control.end()
"""A series of trials where sets of dots are displayed, the goal is to guess on which side there are more.
"""

import pygame
import rond_taille_congruent
import rond_taille_noncongruent
import rond_sparsity_congruent
import rond_sparsity_noncongruent
import random
# L'ensemble de ces modules nous servent à générer nos stimuli aléatoirement et les enregistrer sous format png
import numpy as np  # Pas utile ici mais au cas où
import expyriment
from expyriment.stimuli import FixCross, BlankScreen, Video, Picture
from expyriment import control

control.set_develop_mode(False)  # Renvoie erreurs format python

# Phase de génération des stimuli. Inconvénient : Prend un certain temps
# On génère les stimulus utilisés pour le block 1 : ici on regarde la taille en fonction du nombre de points
list_stim_block_1 = []

if __name__ == "__main__":
    n = 1
    while n <= 16:
        rond_taille_congruent.display_dots_size_cong(
            "stimulus_rond_size_up%d.png" % (n))
        list_stim_block_1.append("stimulus_rond_size_up%d.png" % (n))
        rond_taille_noncongruent.display_dots_size_incong(
            "stimulus_rond_size_down%d.png" % (n))
        list_stim_block_1.append("stimulus_rond_size_down%d.png" % (n))
        n += 1