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()
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:
""" 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)
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"]:
#!/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)
#! /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)
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)
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()
#!/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