Reply To: running penncontroller locally

PennController for IBEX Forums Support running penncontroller locally Reply To: running penncontroller locally

#5877
mat646
Participant

Thank you all! Came across this thread when I tried to figure out how to run locally, and wanted to share what worked for me in case anyone else runs into any problems or has no prior knowledge about running anything via a local server.

Instructions for computer with Windows 10 and zero knowledge about local servers:

Before running experiment locally:
– download (zipped folder of everything) IBEX here: https://github.com/addrummond/ibex
– unpack somewhere accessible on your computer (e.g. desktop)
– download your zipped ibexfarm/pcibexfarm experiment file structure
– replace sample files from IBEX with your experiment files (most important = experiment script from data_includes and data/html pages from chunck_includes)

To use locally stored images/sounds follow Jeremy’s instructions (repeated here):
edit the file server.py in your experiment’s www folder and, below these two lines:

if fname.endswith(".wav") or fname.endswith(".mp3") or fname.endswith("m4a"):
    continue

add

if fname.endswith(".png") or fname.endswith(".jpg") or fname.endswith(".bmp"):
    continue

And further down, replace this line:
start_response('200 OK', [('Content-Type', 'audio/mpeg'), ('Content-Length', stats.st_size)])
with

if qs_hash['resource'][0].endswith(".wav")  or qs_hash['resource'][0].endswith(".mp3") or qs_hash['resource'][0].endswith(".m4a"):
    start_response('200 OK', [('Content-Type', 'audio/mpeg'), ('Content-Length', stats.st_size)])
elif qs_hash['resource'][0].endswith(".png") or qs_hash['resource'][0].endswith(".jpg") or qs_hash['resource'][0].endswith(".bmp"):
    start_response('200 OK', [('Content-Type', 'image/*'), ('Content-Length', stats.st_size)])

–> I first got an indentation error that was fixed by copy-pasting the indentation of a prior if line (don’t know why, but worked)

Then you can place your image and audio files (though no OGG file) in the chunk_includes folder

–> I did not need to change anything about the referencing in my script.js so after changing the lines above I could just refer to the stimuli as follows:

PennController(
    newImage("my image", "Image.png")
        .print()
    ,
    newButton("continue", "Continue")
        .print()
        .wait()
)

Now to run experiment locally:
-make sure python 2.7 is installed on your computer
-open windows command prompt (cmd)
-change directories to the ‘www’ folder of your local version of Ibex
e.g. cd C:\Users\maxim\desktop\ibex-master\www
– open server (SimpleHttpserver)
python server.py

Now open your browser and go to:
http://localhost:3000/experiment.html

Your experiment should run.