Skip to content

Commit

Permalink
Merge 87b8f1a into 4a576eb
Browse files Browse the repository at this point in the history
  • Loading branch information
dvbridges committed Feb 12, 2019
2 parents 4a576eb + 87b8f1a commit cf0afb7
Show file tree
Hide file tree
Showing 14 changed files with 1,390 additions and 230 deletions.
53 changes: 53 additions & 0 deletions docs/source/builder/components/form.rst
@@ -0,0 +1,53 @@
.. _form:

Form Component
--------------

The Form component enables Psychopy to be used as a questionnaire tool, where
participants can be presented with a series of questions requiring responses.
Form items, defined as questions and response pairs, are presented
simultaneously onscreen with a scrollable viewing window.

Properties
~~~~~~~~~~

Name : string
Everything in a PsychoPy experiment needs a unique name. The name should contain only letters, numbers and underscores (no punctuation marks or spaces).

Start : int, float
The time that the stimulus should first appear.

Stop : int, float
Governs the duration for which the stimulus is presented.

Items : List of dicts or csv / xlsx file
A list of dicts or csv file should have the following key, value pairs / column headers:

:*questionText*: item question string
:*questionWidth*: question width between 0:1
:*type*: type of rating e.g., 'radio', 'rating', 'slider'
:*responseWidth*: question width between 0:1
:*options*: list of tick labels for options
:*layout*: Response object layout e.g., 'horiz' or 'vert'

Text height : float
Text height of the Form elements (i.e., question and response text).

Size : [X,Y]
Size of the stimulus, to be specified in 'height' units.

Pos : [X,Y]
The position of the centre of the stimulus, to be specified in 'height' units.

Item padding : float
Space or padding between Form elements (i.e., question and response text), to be specified in 'height' units.

Data format : menu
Choose whether to store items data by column or row in your datafile.

randomize : bool
Randomize order of Form elements

.. seealso::

API reference for :class:`~psychopy.visual.Form`
144 changes: 144 additions & 0 deletions psychopy/demos/builder/BigFiveInventory/Form.psyexp
@@ -0,0 +1,144 @@
<?xml version="1.0" ?>
<PsychoPy2experiment encoding="utf-8" version="3.0.1">
<Settings>
<Param name="Completed URL" updates="None" val="" valType="str"/>
<Param name="Data filename" updates="None" val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code"/>
<Param name="Enable Escape" updates="None" val="True" valType="bool"/>
<Param name="Experiment info" updates="None" val="{'participant': '', 'session': '001'}" valType="code"/>
<Param name="Force stereo" updates="None" val="True" valType="bool"/>
<Param name="Full-screen window" updates="None" val="True" valType="bool"/>
<Param name="HTML path" updates="None" val="html" valType="str"/>
<Param name="Incomplete URL" updates="None" val="" valType="str"/>
<Param name="JS libs" updates="None" val="packaged" valType="str"/>
<Param name="Monitor" updates="None" val="testMonitor" valType="str"/>
<Param name="Save csv file" updates="None" val="False" valType="bool"/>
<Param name="Save excel file" updates="None" val="False" valType="bool"/>
<Param name="Save log file" updates="None" val="True" valType="bool"/>
<Param name="Save psydat file" updates="None" val="True" valType="bool"/>
<Param name="Save wide csv file" updates="None" val="True" valType="bool"/>
<Param name="Screen" updates="None" val="1" valType="num"/>
<Param name="Show info dlg" updates="None" val="True" valType="bool"/>
<Param name="Show mouse" updates="None" val="False" valType="bool"/>
<Param name="Units" updates="None" val="height" valType="str"/>
<Param name="Use version" updates="None" val="" valType="str"/>
<Param name="Window size (pixels)" updates="None" val="[1920, 1080]" valType="code"/>
<Param name="blendMode" updates="None" val="avg" valType="str"/>
<Param name="color" updates="None" val="$[0,0,0]" valType="str"/>
<Param name="colorSpace" updates="None" val="rgb" valType="str"/>
<Param name="expName" updates="None" val="Form" valType="str"/>
<Param name="exportHTML" updates="None" val="on Sync" valType="str"/>
<Param name="logging level" updates="None" val="exp" valType="code"/>
</Settings>
<Routines>
<Routine name="demog">
<FormComponent name="demographics">
<Param name="Data Format" updates="constant" val="rows" valType="str"/>
<Param name="Item Padding" updates="constant" val="0.06" valType="code"/>
<Param name="Items" updates="constant" val="demographics.csv" valType="str"/>
<Param name="Pos" updates="constant" val="(0, 0)" valType="code"/>
<Param name="Randomize" updates="constant" val="False" valType="bool"/>
<Param name="Size" updates="constant" val="(1, 0.7)" valType="code"/>
<Param name="Text Height" updates="constant" val="0.02" valType="code"/>
<Param name="durationEstim" updates="None" val="" valType="code"/>
<Param name="name" updates="None" val="demographics" valType="code"/>
<Param name="startEstim" updates="None" val="" valType="code"/>
<Param name="startType" updates="None" val="time (s)" valType="str"/>
<Param name="startVal" updates="None" val="0.0" valType="code"/>
<Param name="stopType" updates="None" val="duration (s)" valType="str"/>
<Param name="stopVal" updates="constant" val="" valType="code"/>
</FormComponent>
<TextComponent name="demogText">
<Param name="color" updates="constant" val="white" valType="str"/>
<Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
<Param name="durationEstim" updates="None" val="" valType="code"/>
<Param name="flip" updates="constant" val="" valType="str"/>
<Param name="font" updates="constant" val="Arial" valType="str"/>
<Param name="languageStyle" updates="None" val="LTR" valType="str"/>
<Param name="letterHeight" updates="constant" val="0.05" valType="code"/>
<Param name="name" updates="None" val="demogText" valType="code"/>
<Param name="opacity" updates="constant" val="1" valType="code"/>
<Param name="ori" updates="constant" val="0" valType="code"/>
<Param name="pos" updates="constant" val="(0, .4)" valType="code"/>
<Param name="startEstim" updates="None" val="" valType="code"/>
<Param name="startType" updates="None" val="time (s)" valType="str"/>
<Param name="startVal" updates="None" val="0.0" valType="code"/>
<Param name="stopType" updates="None" val="duration (s)" valType="str"/>
<Param name="stopVal" updates="constant" val="" valType="code"/>
<Param name="text" updates="constant" val="Please answer the following questions:" valType="str"/>
<Param name="units" updates="None" val="from exp settings" valType="str"/>
<Param name="wrapWidth" updates="constant" val="" valType="code"/>
</TextComponent>
<CodeComponent name="code">
<Param name="Begin Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin Routine" updates="constant" val="continueButton = visual.ButtonStim(win, labelText= &quot;Continue&quot;, pos=(.35, -.4))" valType="extendedCode"/>
<Param name="Code Type" updates="None" val="Py" valType="str"/>
<Param name="Each Frame" updates="constant" val="continueButton.draw()&amp;#10;&amp;#10;if demographics.formComplete():&amp;#10; continueButton.buttonEnabled = True&amp;#10; &amp;#10;if continueButton.buttonSelected:&amp;#10; continueRoutine = False" valType="extendedCode"/>
<Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
<Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="name" updates="None" val="code" valType="code"/>
</CodeComponent>
</Routine>
<Routine name="Main">
<FormComponent name="BFI">
<Param name="Data Format" updates="constant" val="rows" valType="str"/>
<Param name="Item Padding" updates="constant" val="0.05" valType="code"/>
<Param name="Items" updates="constant" val="BigFiveItems.csv" valType="str"/>
<Param name="Pos" updates="constant" val="(0, 0)" valType="code"/>
<Param name="Randomize" updates="constant" val="False" valType="bool"/>
<Param name="Size" updates="constant" val="(1, 0.7)" valType="code"/>
<Param name="Text Height" updates="constant" val="0.02" valType="code"/>
<Param name="durationEstim" updates="None" val="" valType="code"/>
<Param name="name" updates="None" val="BFI" valType="code"/>
<Param name="startEstim" updates="None" val="" valType="code"/>
<Param name="startType" updates="None" val="time (s)" valType="str"/>
<Param name="startVal" updates="None" val="0.0" valType="code"/>
<Param name="stopType" updates="None" val="duration (s)" valType="str"/>
<Param name="stopVal" updates="constant" val="" valType="code"/>
</FormComponent>
<CodeComponent name="formCode">
<Param name="Begin Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="Begin Routine" updates="constant" val="continueButton = visual.ButtonStim(win, labelText= &quot;Continue&quot;, pos=(.35, -.4))" valType="extendedCode"/>
<Param name="Code Type" updates="None" val="Py" valType="str"/>
<Param name="Each Frame" updates="constant" val="continueButton.draw()&amp;#10;&amp;#10;if BFI.formComplete():&amp;#10; continueButton.buttonEnabled = True&amp;#10; &amp;#10;if continueButton.buttonSelected:&amp;#10; continueRoutine = False" valType="extendedCode"/>
<Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
<Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
<Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
<Param name="name" updates="None" val="formCode" valType="code"/>
</CodeComponent>
<TextComponent name="FormInstr">
<Param name="color" updates="constant" val="white" valType="str"/>
<Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
<Param name="durationEstim" updates="None" val="" valType="code"/>
<Param name="flip" updates="constant" val="" valType="str"/>
<Param name="font" updates="constant" val="Arial" valType="str"/>
<Param name="languageStyle" updates="None" val="LTR" valType="str"/>
<Param name="letterHeight" updates="constant" val="0.02" valType="code"/>
<Param name="name" updates="None" val="FormInstr" valType="code"/>
<Param name="opacity" updates="constant" val="1" valType="code"/>
<Param name="ori" updates="constant" val="0" valType="code"/>
<Param name="pos" updates="constant" val="(0, 0.4)" valType="code"/>
<Param name="startEstim" updates="None" val="" valType="code"/>
<Param name="startType" updates="None" val="time (s)" valType="str"/>
<Param name="startVal" updates="None" val="0.0" valType="code"/>
<Param name="stopType" updates="None" val="duration (s)" valType="str"/>
<Param name="stopVal" updates="constant" val="" valType="code"/>
<Param name="text" updates="constant" val="Here are a number of characteristics that may or may not apply to you. For example, do you agree&amp;#10;that you are someone who likes to spend time with others? Please select the appropriate rating next to each&amp;#10;statement to indicate the extent to which you agree or disagree with that statement." valType="str"/>
<Param name="units" updates="None" val="from exp settings" valType="str"/>
<Param name="wrapWidth" updates="constant" val="" valType="code"/>
</TextComponent>
</Routine>
</Routines>
<Flow>
<Routine name="demog"/>
<Routine name="Main"/>
</Flow>
</PsychoPy2experiment>
22 changes: 22 additions & 0 deletions psychopy/demos/builder/BigFiveInventory/README.txt
@@ -0,0 +1,22 @@
BIG FIVE INVENTORY (BFI) - Form Class Demonstration
---------------------------------------------------

The experiment:

The Big Five Inventory is a 44-item inventory that measures an individual on the Big Five Factors (dimensions) of
personality (Goldberg, 1993), namely Openness, Conscientiousness, Extraversion, Agreeableness and Neuroticism.
Each of the factors is then further divided into personality facets. See the link in the reference section.

Analysing your data:

Read the pdf in the reference section for advice on scoring your personality scale. In general, you will take the average
score for each personality factor for use in your analysis. Do not forget about the reverse scored items!

References:

John, O. P., & Srivastava, S. (1999). The Big-Five trait taxonomy: History, measurement, and
theoretical perspectives. In L. A. Pervin & O. P. John (Eds.), Handbook of personality: Theory
and research (Vol. 2, pp. 102-138). New York: Guilford Press.

https://pdfs.semanticscholar.org/0898/fc9f1068d99eaf18011c14913f6530144794.pdf

0 comments on commit cf0afb7

Please sign in to comment.