The new PCIbex Farm is here! Be sure to check out all of its new features and changes.

Link Search Menu Expand Document



Creates an item that will set Ibex’s internal counter when it is run.



What does (PennController.) mean?


  • (PennController.)SetCounter( "label" )

  • (PennController.)SetCounter( number )

  • (PennController.)SetCounter( "label" , number )

  • (PennController.)SetCounter( "inc" , number )

  • (PennController.)SetCounter( "label" , "inc", number )


  • Ibex has an internal counter which keeps track of how many people participated in your experiment in order to automatically handle group designs. By default, the counter is incremented at the end of the experiment, which has the undesirable effect of assigning the same group to all the participants who click your link before anyone has completed your experiment. You can choose to run [js]SetCounter(“inc”, 1)[/js] at the very beginning of your experiment instead.

  • You can pass a label as the first argument, which you can then use in [yadawiki link=”PennController.Sequence” show=”[js]Sequence[/js]”]: this way you can make it the first item to run and therefore increment the counter at each click—provided you passed "inc" too. Note that, in the absence of "inc", if you pass a number then the counter will be set to that value.


@AddTable( "myTable" , 
@  "Group,Button\n"+
@  "A,Hello\n"+
@  "B,World"
@Sequence("counter", "trial");
$SetCounter("counter", "inc", 1);
@Template( "myTable" , row => 
@  newTrial( "trial" ,
@    newButton( "greetings" , row.Button )
@        .print()
@        .wait()
@  )
  • Increments the counter as soon as the experiment starts running. Since we use a table defining two groups (A and B) the button will read Hello or World every other time the experiment is run (try running it multiple times without clicking the button).