jamesbutler01 / Mymou

Mymou: A standalone touchscreen in-cage testing device
16 stars 11 forks source link

Save a copy of all preferences on task start? #17

Closed iandol closed 4 years ago

iandol commented 4 years ago

Hi James, when a task starts it would be really helpful if alongside the task log, a copy of the prefManager settings was also saved. It means we can evaluate what settings were used when collecting the data, which currently is not really possible. I assume there is some way to serialise the object to JSON or some other format?

jamesbutler01 commented 4 years ago

Sorry I was away for hols, should be much more responsive now. It should definitely be possible to reverse engineer the settings from the behavioural logs generated, as each trial should be logging all relevant information so that it can be analysed afterwards. I understand this isn't ideal though.

I currently handle this by writings tasks such that they log all these relative parameters in the CSV on a trial by trial basis. For me the advantages of this are:

I can see there are drawbacks however:

For me the advantages outweigh the disadvantages but i'm definitely open to altering it if you feel the opposite? And actually as writing this I'm thinking it could be a really useful debugging tool, e.g. your recent cameraSavePhoto issue, particularly for me helping remote users.

iandol commented 4 years ago

It is not always easy to know ahead of time which prefs may be relevant. As an example, if by accident you misclick the background colour to be the same as the target, monkey performance drops but you have no objective record why (yes, we can solve it by looking, but sometimes the tablet is on-cage and not easy to observe). Saving the prefs enables one to problem solve this kind of potential blunder from the files themselves.

Logging is not exclusive to prefs saving, so you could log the main important settings, and still save the prefs "as-they-were" when that task started. It provides a more complete record, even if you may not have to parse it for basic analysis when everything is working. In MATLAB I could solve this in a second, but Android is still opaque enough to me (the prefs system looks super convoluted), that I'm not sure where to get all prefs. As I said on another issue, prefsManager isn't a singleton, and I'm not sure (given my shaky android knowledge) how that affects the ability to easily serialise this object to a format like JSON?

jamesbutler01 commented 4 years ago

Fair points, I'll have a look at how feasible it is

jamesbutler01 commented 4 years ago

Now implemented in 7719e5eff2a5ae56b1b714e970b228af1ddc142f