Gemeinsame Funktionen
Die folgenden Funktionen sind in inline_script-Elementen verfügbar:
- Canvas(auto_prepare=True, **style_args)
- Experiment(osexp_path=None, log_path='defaultlog.csv', fullscreen=False, subject_nr=0, **kwargs)
- Form(*args, **kwargs)
- Keyboard(**resp_args)
- Mouse(**resp_args)
- Sampler(src, **playback_args)
- Synth(osc='sine', freq=440, length=100, attack=0, decay=5)
- copy_sketchpad(name)
- pause()
- register_cleanup_function(fnc)
- reset_feedback()
- set_subject_nr(nr)
- sometimes(p=0.5)
- xy_circle(n, rho, phi0=0, pole=(0, 0))
- xy_distance(x1, y1, x2, y2)
- xy_from_polar(rho, phi, pole=(0, 0))
- xy_grid(n, spacing, pole=(0, 0))
- xy_random(n, width, height, min_dist=0, pole=(0, 0))
- xy_to_polar(x, y, pole=(0, 0))
Canvas(auto_prepare=True, **style_args)
Eine Fabrikfunktion, die ein neues Canvas
-Objekt erstellt. Für eine
Beschreibung möglicher Schlüsselwörter, siehe:
Gibt zurück
- Ein
Canvas
-Objekt.
Beispiel
my_canvas = Canvas(color=u'red', penwidth=2)
my_canvas.line(-10, -10, 10, 10)
my_canvas.line(-10, 10, 10, -10)
my_canvas.show()
Experiment(osexp_path=None, log_path='defaultlog.csv', fullscreen=False, subject_nr=0, **kwargs)
Eine Fabrikfunktion, die ein neues Experiment
-Objekt erstellt. Dies ist nur
nützlich, wenn ein Experiment vollständig über ein Python-Skript implementiert wird,
anstatt über die Benutzeroberfläche.
Parameter
- osexp_path: Wenn ein Pfad zu einer
.osexp
-Datei angegeben ist, wird diese Datei geöffnet und kann direkt durch Aufruf vonExperiment.run()
ausgeführt werden. Wenn keine Experiment- Datei angegeben ist, wird ein leeres Experiment initialisiert. - log_path:
- fullscreen:
- subject_nr:
- kwargs: Optionale Schlüsselwort-Argumente, die als experimentelle
Variablen interpretiert werden. Der Hauptzweck besteht darin, das Backend über
das
canvas_backend
Schlüsselwort zu spezifizieren.
Gibt zurück
- Ein (exp, win, clock, log) Tupel, das den Experiment, Fenstergriff (backend-spezifisch), Clock und Log Objekten entspricht.
Beispiel
Um ein Experiment vollständig programmatisch zu implementieren:
from libopensesame.python_workspace_api import (
Experiment, Canvas, Text, Keyboard)
exp, win, clock, log = Experiment(canvas_backend='legacy')
c = Canvas()
c += Text('Press any key')
c.show()
kb = Keyboard()
kb.get_key()
exp.end()
Um eine Experimentdatei zu laden und auszuführen:
from libopensesame.python_workspace_api import Experiment
exp, win, clock, log = Experiment(osexp_path='my_experiment.osexp',
subject_nr=2)
exp.run()
Form(*args, **kwargs)
Eine Fabrikfunktion, die ein neues Form
-Objekt erstellt. Für eine
Beschreibung
möglicher Schlüsselwörter, siehe:
Gibt zurück
- Ein
Form
-Objekt.
Beispiel
form = Form()
label = Label(text='Beschriftung')
button = Button(text='Ok')
form.set_widget(label, (0,0))
form.set_widget(button, (0,1))
form._exec()
Keyboard(**resp_args)
Eine Fabrikfunktion, die ein neues Keyboard
-Objekt erstellt. Für eine
Beschreibung möglicher Schlüsselwörter, siehe:
Gibt zurück
- Ein
Keyboard
-Objekt.
Beispiel
my_keyboard = Keyboard(keylist=[u'a', u'b'], timeout=5000)
key, time = my_keyboard.get_key()
Mouse(**resp_args)
Eine Fabrikfunktion, die ein neues Mouse
-Objekt erstellt. Für eine
Beschreibung
möglicher Schlüsselwörter, siehe:
Gibt zurück
- Ein
mouse
-Objekt.
Beispiel
my_mouse = Mouse(keylist=[1,3], timeout=5000)
button, time = my_mouse.get_button()
Sampler(src, **playback_args)
Eine Fabrikfunktion, die ein neues Sampler
-Objekt erstellt. Für eine
Beschreibung möglicher Schlüsselwörter, siehe:
Gibt zurück
- Ein sampler-Objekt.
Beispiel
src = pool['bark.ogg']
my_sampler = Sampler(src, volume=.5, pan='left')
my_sampler.play()
Synth(osc='sine', freq=440, length=100, attack=0, decay=5)
Eine Fabrikfunktion, die einen Klang synthetisiert und ihn als
Sampler
-Objekt zurückgibt.
Parameter
- osc: Oszillator, kann "sine", "saw", "square" oder "white_noise" sein.
- freq: Frequenz, entweder ein ganzzahliger Wert (Wert in Hertz) oder eine Zeichenkette ("A1", "eb2", etc.).
- length: Die Länge des Klangs in Millisekunden.
- attack: Die Angriffszeit (Fade-In) in Millisekunden.
- decay: Die Abklingzeit (Fade-Out) in Millisekunden.
Gibt zurück
- Ein sampler-Objekt.
Beispiel
my_sampler = Synth(freq=u'b2', length=500)
copy_sketchpad(name)
Gibt eine Kopie der Leinwand eines sketchpad
zurück.
Parameter
- name: Der Name des
sketchpad
.
Gibt zurück
- Eine Kopie der Leinwand des
sketchpad
.
Beispiel
my_canvas = copy_sketchpad('my_sketchpad')
my_canvas.show()
pause()
Pausiert das Experiment.
register_cleanup_function(fnc)
Registriert eine Aufraumfunktion, die ausgeführt wird, wenn das Experiment endet. Aufraumfunktionen werden ganz am Ende ausgeführt, nachdem die Anzeige, die Soundvorrichtung und die Log-Datei geschlossen wurden. Aufraumfunktionen werden auch ausgeführt, wenn das Experiment abstürzt.
Beispiel
def my_cleanup_function():
print(u'Das Experiment ist abgeschlossen!')
register_cleanup_function(my_cleanup_function)
reset_feedback()
Setzt alle Feedback-Variablen auf ihren ursprünglichen Zustand zurück.
Beispiel
reset_feedback()
set_subject_nr(nr)
Legt die Versuchspersonennummer und Parität fest (gerade/ ungerade). Diese Funktion wird automatisch aufgerufen wenn ein Experiment gestartet wird. Sie müssen es nur selbst aufrufen, wenn Sie die Versuchspersonennummer überschreiben, die beim Start des Experiments angegeben wurde.
Parameter
- nr: Die Versuchspersonennummer.
Beispiel
set_subject_nr(1)
print('Versuchspersonennummer = %d' % var.subject_nr)
print('Versuchspersonenparität = %s' % var.subject_parity)
sometimes(p=0.5)
Gibt True mit einer bestimmten Wahrscheinlichkeit zurück. (Für fortgeschritteneres
Zufallsprinzip, verwenden Sie das Python random
-Modul.)
Parameter
- p: Die Wahrscheinlichkeit, dass True zurückgegeben wird.
Rückgabe
- True oder False
Beispiel
if sometimes():
print('Manchmal gewinnt man')
else:
print('Manchmal verliert man')
xy_circle(n, rho, phi0=0, pole=(0, 0))
Generiert eine Liste von Punkten (x,y-Koordinaten) im Kreis. Dies kann verwendet werden um Reize in einer kreisförmigen Anordnung darzustellen.
Parameter
- n: Die Anzahl der x,y-Koordinaten, die generiert werden sollen.
- rho: Der radiale Koordinatenwert, auch Abstand oder Exzentrizität des ersten Punkten.
- phi0: Die Winkelkoordinate für die erste Koordinate. Dies ist eine gegenuhrzeigersinnige Drehung in Grad (d.h. nicht in Radiant), wobei 0 gerade nach rechts zeigt.
- pole: Der Bezugspunkt.
Rückgabe
- Eine Liste von (x,y) Koordinatentupeln.
Beispiel
# Zeichne 8 Rechtecke um einen zentralen Fixpunkt
c = Canvas()
c.fixdot()
for x, y in xy_circle(8, 100):
c.rect(x-10, y-10, 20, 20)
c.show()
xy_distance(x1, y1, x2, y2)
Gibt den Abstand zwischen zwei Punkten an.
Parameter
- x1: Die x-Koordinate des ersten Punktes.
- y1: Die y-Koordinate des ersten Punktes.
- x2: Die x-Koordinate des zweiten Punktes.
- y2: Die y-Koordinate des zweiten Punktes.
Rückgabe
- Der Abstand zwischen den beiden Punkten.
xy_from_polar(rho, phi, pole=(0, 0))
Konvertiert polare Koordinaten (Abstand, Winkel) in kartesische Koordinaten (x, y).
Parameter
- rho: Die radiale Koordinate, auch Abstand oder Exzentrizität.
- phi: Die Winkelkoordinate. Dies zeigt eine drehung im Uhrzeigersinn in Grad (d.h. nicht Radiant), wobei 0 gerade nach rechts zeigt.
- pole: Der Bezugspunkt.
Rückgabe
- Ein (x, y) Koordinatentupel.
Beispiel
# Zeichne ein Kreuz
x1, y1 = xy_from_polar(100, 45)
x2, y2 = xy_from_polar(100, -45)
c = Canvas()
c.line(x1, y1, -x1, -y1)
c.line(x2, y2, -x2, -y2)
c.show()
xy_grid(n, spacing, pole=(0, 0))
Generiert eine Liste von Punkten (x,y-Koordinaten) in einem Raster. Dies kann verwendet werden um Reize in einer Rasteranordnung darzustellen.
Parameter
- n: Eine
int
, die die Anzahl der Spalten und Zeilen angibt, sodassn=2
einen 2x2-Grid angibt, oder ein (n_col, n_row)tuple
, sodassn=(2,3)
einen 2x3-Grid angibt. - spacing: Ein numerischer Wert, der den Abstand zwischen den Zellen angibt, oder ein (col_spacing, row_spacing) Tupel.
- pole: Der Bezugspunkt.
Rückgabe
- Eine Liste von (x,y) Koordinatentupeln.
Beispiel
# Zeichne ein 4x4 Raster von Rechtecken
c = Canvas()
c.fixdot()
for x, y in xy_grid(4, 100):
c.rect(x-10, y-10, 20, 20)
c.show()
xy_random(n, width, height, min_dist=0, pole=(0, 0))
Erzeugt eine Liste von zufälligen Punkten (x, y-Koordinaten) mit einem Minimum Abstand zwischen jedem Paar von Punkten. Diese Funktion wird eine Ausnahme auslösen, wenn die Koordinatenliste nicht generiert werden kann, normalerweise weil es gibt zu viele Punkte, der min_dist ist zu hoch eingestellt, oder die Breite oder Höhe sind zu niedrig eingestellt.
Parameter
- n: Die Anzahl der zu generierenden Punkte.
- width: Die Breite des Feldes mit zufälligen Punkten.
- height: Die Höhe des Feldes mit zufälligen Punkten.
- min_dist: Der minimale Abstand zwischen jedem Punkt.
- pole: Der Referenzpunkt.
Gibt zurück
- Eine Liste von (x,y) Koordinaten-Tupeln.
Beispiel
# Zeichne 50 Rechtecke in einem zufälligen Gitter
c = Canvas()
c.fixdot()
for x, y in xy_random(50, 500, 500, min_dist=40):
c.rect(x-10, y-10, 20, 20)
c.show()
xy_to_polar(x, y, pole=(0, 0))
Konvertiert kartesische Koordinaten (x, y) in Polarkoordinaten (Distanz, Winkel).
Parameter
- x: Die X-Koordinate.
- y: Die Y-Koordinate.
- pole: Der Referenzpunkt.
Gibt zurück
- Ein (rho, phi) Koordinaten-Tupel. Hier ist
rho
die radiale Koordinate, auch Distanz oder Exzentrizität.phi
ist die Winkelkoordinate in Grad (d. h. nicht Bogenmaß) und widerspiegelt eine gegen den Uhrzeigersinn in Drehung, 0 ist gerade rechts.
Beispiel
rho, phi = xy_to_polar(100, 100)