Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Several questions regarding Open Sesame experiment user interface

I'm currently working on my Master Project and I have to create an experiment. Since I have some previous knowledge of Open Sesame, I want to use that. However I'm not quite sure if the things I want to implement are possible in Open Sesame. Therefore I first want to check here if these things are even possible before fully focussing on implementation.

The first question I have is if it is possible to have a second screen or pop up with a scroll bar in it. In my experiment participants have to rate 3 stimuli for 16 trials and they should be able to see the previous ratings as well. Since putting that all on one screen is a lot of information, I thought being able to scroll through that screen would be a solution. Is having a seperate screen or a scroll function an option in Open Sesame? If not would there be some sort of alternative way in which I could present this information clearly to the participant?

The second question is about widgets. Can widgets be locked in any way, such that they are still on the screen but they cannot be interacted with anymore? Say that a participant put in a score of 3, 4 and 5 for the three stimuli at trial 10. Now that they go to trial 11 I want them to be able to still see the 3, 4 and 5, but they shouldnt be able to change their answer anymore, nor should they be able to fill in answers from trial 12 already. I was thinking of using sliders as widgets (I've tried out the implementation mentioned on this forum and with a few adjustments I think I could make them work), so i'd like to keep the sliders on screen instead of just a number. So a slider on the value 4 instead of just the number 4, as that will be most similar to what participants have to fill in in the next trial.

Thanks in advance for any replies, and if anything is still unclear I will gladly provide more information!

Comments

  • Hi sanne,

    a second screen or pop up with a scroll bar in it

    That is not possible I am afraid. You could in theory open new windows, but that complicates things a lot, and I am quite sure Opensesame's "regular" behaviour will be weird if you try to do that.

    If not would there be some sort of alternative way in which I could present this information clearly to the participant?

    You could spread your information on different form items. If you have one form per stimulus, there would "only" be 16 rating on a single form. I think it is possible to present this amount of information without causing to much of an overload on the screen.

    I am even not so sure whether it is a given that presenting 3*16 rating will have to be too confusing as well. It would be best, if your experiment a bit with forms and how much information to present in which way. Once you made yourself a better impression of that, you will also have a better idea of what a good way to present the information would be. You should check out this doc page in the process of doing so.

    Can widgets be locked in any way, such that they are still on the screen but they cannot be interacted with anymore?

    No, they can't. What you can do though is to change the input widget (whichever you use) into a presentation widget. So, for example, a text input widget can become a text display widget. That requires however, that you make and show a new form.

    If you want to use sliders, you could prepare 5 screenshots of the opensesame slider (one for each response on a 5-point likert scale) and show the images of the previous sliders instead the actual sliders for previous responses. Future responses, I would simply not show at all. That should be the least confusing.

    I hope this helps!

    Eduard

    Buy Me A Coffee

  • Hi Eduard,

    Thanks so much for answering! This already helped me get a lot further with everything. I am currently using a python inline script to create the form page and it works really well.

    I do have some other questions that have popped up.

    My previous post that I typed up suddenly disappeared, so therefore I'm writing this current one (which will hopefully stay up).

    The first one is about adding a background to the experiment. I've included a picture to show what I mean. I want one side to have a ground-like background and the other to sort of look like a screen. I assumed that what is created in the prepare phase and then put on the screen in the run phase as a first item will be the one that is most to the back and everything else will overlap it. As can be seen in this (very unfished experiment) screenshot, this does indeed work for images and text. They lay over the background. However when using any type of interactive widget (buttons, image buttons, input fields and checkboxes) these things do not work. If I remove the background then those interactive widgets do work. I've also tried to already set the background on the screen in the prepare phase instead of the run one, but this also does not work. Is there any way to get these interactive widgets to work while having a background as well? I also don't mind having to put only one background image in (that goes behind the roster in some way), just as long as everything else still works.

    The second question I have is about backgrounds as well. Depending on the size of the picture that is the background it either fully fills the space or it doesn't. This can already be seen in the difference between the brown and the grey-gradient background. Is there any place to see what the measurements of the screen are? That way I could calculate how big the pictures should be to fit neatly on the screen.


    My last question is about something else. I would like to display the stimuli on the left part of the screen in random locations. Is there a way that I can put the stimuli on random positions (there are 3 columns of equal length on the left part and they should be 4 rows long just like the diamond is now) on the screen, while also making sure that they don't overlap with each other? Is there an easy way to do this? Or is it just going to be a whole lot of if-else checks.

    Is the position the stimuli is placed in saved in the global variables? I want to show a screen with just the static images first, and then after a certain time, the interactive widgets come into play. I thought the easiest way to do this is to just make a new form that is the same as this one, but with the interactive elements included. However as the stimuli will appear in random places it would be useful to be able to say "remember the last position you were in? go there".


    Apologies for the many questions and thanks again for the very clear answers last time!

  • edited January 10

    Hi @Sannee ,


    Regarding question 1: this indeed sounds like it has to do with OpenSesame's prepare-run strategy. Is it possible to upload your experiment?


    Regarding question 2: perhaps the built-in variables width and height can be of use? To print them to the console, you can use:

    print(var.width)
    print(var.height)
    


    To change the resolution of the screen, you could use the tab of the very first item in the experimental overview:



    Regarding question 3:


    There are 3 columns of equal length on the left part and they should be 4 rows long just like the diamond is now.

    (This sounded to me like you want to place your stimuli on an imaginary 3*4 grid. If I assumed incorrectly, and you want positions to be completely random, just let us know.)


    Somewhere before your block loop, append an inline_script item to define all possible (x,y) combinations:


    # Import built-in Python modules:
    import itertools
    import random
    
    # Make lists of possible x and y positions:
    x_positions = [-300, -150, 0]
    y_positions = [-300, -100, 100, 300]
    
    # Make a list of all possible (x,y) combinations (resulting in a
    # 3x4 grid):
    combinations = list(itertools.product(x_positions, y_positions))
    
    # Shuffle the list (if necessary)
    random.shuffle(combinations)
    


    And then append a second inline_script item to your trial sequence to retrieve the current position:

    # Create a canvas object
    my_canvas = Canvas()
    
    # Get one position from the list:
    # NOTE: after 12 trials, the list is empty
    position = combinations.pop()
    
    # Store the current x and y coordinates in as var properties 
    # (so that they are logged by the logger item)
    var.x, var.y = position
    
    # Draw a rectangle at the current position:
    my_canvas.rect(var.x, var.y, w = 50, h = 50)
        
    my_canvas.show()
    


    I uploaded an example experiment.


    Hope this helps!


    Cheers,


    Lotje


    Buy Me A Coffee

  • Hi!

    Apologies for the late reply, I hadn't been able to get to programming this week yet.

    Sadly enough I cannot upload the file I'm working with, it exits with code 413. I also cannot see your example experiment though, so maybe it is something else? Uploading a smaller file did work, so I put the main parts of my code into the file "WidgetTest.osexp" and uploaded that here.

    An important thing to note is that in this file it takes 13 seconds for the rating boxes and the outcome to appear (even though the duration is set to 2?), so it will take a while for it to jump to something. Feel free to adjust the timing!

    Working with the width and height did indeed work! Currently setting the "screen" widget is commented out, because otherwise the rating does not work.

    Would the random function also work for a grid? So would I then still have x,y coordinates or something more along the line of: possible_x_cols = (1,2,3,4)?

    Kind regards,

    Sanne

  • Hi Sanne,


    Herewith the experiment I tried to upload to show how to implement a grid of possible target locations.


    Buy Me A Coffee

  • Hi Lotje,

    I modified your solution to the grid and it did indeed work, thank you so much!

    I had one last question if that is alright? It's more about how OpenSesame works, so if I should open a new discussion for this please do say so!


    Right now I have two separate python inline-script forms which run after each other in succession. (Sadly enough the file still won't upload). The first script, Cond000S shows for 2 seconds and after that Cond000 shows for 13 seconds. These two forms show practically the same things, except that Cond000 also shows an outcome. As they show the same things I'd like for them to look practically the same, however this is kind of where my problem starts.

    Since both forms are named differently I thought I could just copy-paste the prepare part of Cond000S and paste it onto the prepare part of Cond000. Then in run just change the form they are set to and done! But all of the things that were already created and set on the first form, did not show up on the second form. I currently fix that by naming them differently. For example I tried to make this a bit more clear by adding this picture:

    In my first form, I called the trial numbers "T1" to "T2" and set them in the run part. Then in the second form, I put the O for output behind them. This works for now, but as I have to create 4 more inline-scripts in this way (for different conditions), I don't want to end up with Cond000_T1_O for all of them, since that would make everything less clear to read in my opinion.

    I thought that maybe the T1 to T16 are still in memory from the first form and thus the fact that they are created again messes something up. However just leaving out the T1O to T16O and setting T1 to T16 in the run of the second python for also does not work.


    My questions is, is there a way to name these variables in such a way that I can use them over different python inline-script forms? This would improve readability in my opinion and would also save me some extra time.


    Kind regards,

    Sanne

  • Hi Sanne,

    If I understand the problem right, then this is indeed weird, however, I am not sure I do :)

    Could you upload your experiment, and maybe put a few comments in there with what the problem is exactly?

    Thanks,

    Eduard

    Buy Me A Coffee

  • Hi Eduard,

    I would love to upload my experiment! However when I try I sadly get an error message: "Request failed with status code 413", and I cannot upload it. Would there be any way to go around that?

    Kind regards,

    Sanne

  • Yup. e.g. wetransfer.com or any other filesharing platform

    Buy Me A Coffee

  • Here is the experiment file!

    In the notepad "Current_Problems" I described the problems.

    If you want to run the experiment set the subject number to 1, the order of conditions depends on subject number.

    Kind regards,

    Sanne

  • Hi sanne,

    The problem seems to be twofold. First, the same label widget cannot be linked to two different forms (maybe @sebastiaan could (dis)confirm that?). At least, I can't explain otherwise why the Label widgets won't appear on the second form.

    The second problem was that you had two inline_scripts, back to back. However, as you had code in both the prepare and run phase of each of them, the sequence of executing was this: inline1_prepare, inline2_prepare, inline1_run, inline2_run. Therefore, you haven't actually created two sets of labels (1-16), but you have simply overwritten the first set with the second set. That being said, I am still confused why this should be a problem for showing them on the forms (which brings us back to the first issue). As a work around, you could leave your code as it is, but move the entire code into one phase of each inline_script. Like that they are really executed sequentially. Alternatively, you could first prepare both forms, and then execute them both. In this case you would only need one inline_script. Either way, there wouldn't be the need to have the labels T1 and T1O.

    I haven't yet fixed that in your code, as it is up to you which version you want to implement. However, I took the freedom to simplify your code here and there, which made it quite a bit shorter. Apologies if I changed something unintentionally.

    Hope this is useful to you.

    Eduard

    Buy Me A Coffee

  • Hi Eduard,

    Thank you so much for all the help!

    I read your simplifications in the code and they make it a lot cleaner and better to read and I learned a lot from them! I didn't know you did not explicitly have to set things and it makes it much clearer.

    I will see which of the two methods I will implement! I thought that the order would be inline1_prepare, inline1_run and then inline2_prepare and inline2_run, but it actually makes much more sense that it is the other way around. I'll have a good look at my code and see what I will do.

    Thanks again and kind regards,

    Sanne

  • @eduard

    The problem seems to be twofold. First, the same label widget cannot be linked to two different forms (maybe @sebastiaan could (dis)confirm that?)

    That's true, actually! I filed an issue for this, because this should either be possible or there should be an error message.

    Buy Me A Coffee

Sign In or Register to comment.

agen judi bola , sportbook, casino, togel, number game, singapore, tangkas, basket, slot, poker, dominoqq, agen bola. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 50.000 ,- bonus cashback hingga 10% , diskon togel hingga 66% bisa bermain di android dan IOS kapanpun dan dimana pun. poker , bandarq , aduq, domino qq , dominobet. Semua permainan bisa dimainkan hanya dengan 1 ID. minimal deposit 10.000 ,- bonus turnover 0.5% dan bonus referral 20%. Bonus - bonus yang dihadirkan bisa terbilang cukup tinggi dan memuaskan, anda hanya perlu memasang pada situs yang memberikan bursa pasaran terbaik yaitu http://45.77.173.118/ Bola168. Situs penyedia segala jenis permainan poker online kini semakin banyak ditemukan di Internet, salah satunya TahunQQ merupakan situs Agen Judi Domino66 Dan BandarQ Terpercaya yang mampu memberikan banyak provit bagi bettornya. Permainan Yang Di Sediakan Dewi365 Juga sangat banyak Dan menarik dan Peluang untuk memenangkan Taruhan Judi online ini juga sangat mudah . Mainkan Segera Taruhan Sportbook anda bersama Agen Judi Bola Bersama Dewi365 Kemenangan Anda Berapa pun akan Terbayarkan. Tersedia 9 macam permainan seru yang bisa kamu mainkan hanya di dalam 1 ID saja. Permainan seru yang tersedia seperti Poker, Domino QQ Dan juga BandarQ Online. Semuanya tersedia lengkap hanya di ABGQQ. Situs ABGQQ sangat mudah dimenangkan, kamu juga akan mendapatkan mega bonus dan setiap pemain berhak mendapatkan cashback mingguan. ABGQQ juga telah diakui sebagai Bandar Domino Online yang menjamin sistem FAIR PLAY disetiap permainan yang bisa dimainkan dengan deposit minimal hanya Rp.25.000. DEWI365 adalah Bandar Judi Bola Terpercaya & resmi dan terpercaya di indonesia. Situs judi bola ini menyediakan fasilitas bagi anda untuk dapat bermain memainkan permainan judi bola. Didalam situs ini memiliki berbagai permainan taruhan bola terlengkap seperti Sbobet, yang membuat DEWI365 menjadi situs judi bola terbaik dan terpercaya di Indonesia. Tentunya sebagai situs yang bertugas sebagai Bandar Poker Online pastinya akan berusaha untuk menjaga semua informasi dan keamanan yang terdapat di POKERQQ13. Kotakqq adalah situs Judi Poker Online Terpercayayang menyediakan 9 jenis permainan sakong online, dominoqq, domino99, bandarq, bandar ceme, aduq, poker online, bandar poker, balak66, perang baccarat, dan capsa susun. Dengan minimal deposit withdraw 15.000 Anda sudah bisa memainkan semua permaina pkv games di situs kami. Jackpot besar,Win rate tinggi, Fair play, PKV Games