Howdy, Stranger!

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

Supported by

Excluding certain variables from data log (log.write_vars())

Dear Forum,

I hope you are all doing well.

I have a question concerning my experiment. I am using the log object to log my variables with the following function:

log.write_vars()

Unfortunately, OS seems to log a lot of variables I do not need for my data analysis and therefore I was wondering whether there is any chance to exclude those automatically logged variables. Examples for variables I do not need for my analysis are "count_Block_01", "total_response_time" or "width", just to name a few. Actually I already marked all variables I actually need to be logged with "var.".

Now I read something about the following function:

log.write_vars(var_list=None)

Is it possible to exclude all other variables from the log with this function or is there another way to do so? I am not using any logger items, just the function log.write_vars() for logging my variables.

I am looking forward to you recommendations!

Best,

Sarah

Comments

  • Hi @sarah_alexandra ,

    Yes, you can do that in various ways. The easiest is probably to create a list of variables that you want to exclude. And then you get a list of all variables that OpenSesame knows about with var.inspect() , filter out the ones that you don't want using a list expression, and pass the result to log.write_vars() . Do you see the logic?

    EXCLUDE = ['canvas_backend', 'experiment_path']
    log.write_vars([log_var for log_var in var.inspect() if log_var not in EXCLUDE])
    

    — Sebastiaan

    PS. OpenSesame 4.0, which should be released in a few months, will actually feature an exclude-list in the logger item for exactly this purpose.

  • Hi Sebastiaan,

    Thank you so much for your fast answer!

    That makes a lot of sense to me! Do I understand that correctly that I would have to create the list with variables I want to exclude manually? Meaning that I would have to screen through the current data log to note down which variables I would like to exclude? Or is there an easier way to do so?

    And the list of variables I would like to exclude - I suppose I would not have to add the "var." in front and could list them in the way you did above as a string in "EXCLUDE"?

    Best,

    Sarah

  • Hi @sarah_alexandra ,


    I guess you could just reverse the logic like so, right?


    INCLUDE = ['response_time', 'correct']
    log.write_vars([log_var for log_var in var.inspect() if log_var in INCLUDE])
    


    Cheers,


    Lotje

    Did you like my answer? Feel free to Buy Me A Coffee :)

  • Hi Lotje,

    That makes sense, thanks a lot for the recommendation :)

    Best,

    Sarah

Sign In or Register to comment.