CPM_Dome_default
July 28, 2026Information
- ID
- 14363
- To Cite
- DCA Citation Guide
Transcript
- 00:00Thank you so much for
- 00:01joining today, and I'm just
- 00:03going to immediately
- 00:04pass to
- 00:06Alyssa because our MAPS group
- 00:09is just in supporting role
- 00:10here, and the whole idea
- 00:12and organization
- 00:14came from
- 00:15doctor Ku, and this is
- 00:16your show. So thank you.
- 00:18Great. Thank you, Helen. So
- 00:20it's a pleasure to introduce
- 00:21doctor Lynette Dohm today. Lynette
- 00:24is currently a postdoctoral researcher
- 00:27in Tobias Hauser's lab at
- 00:29University of Tubingen, and he's
- 00:31also a guest scientist at
- 00:33the Max Planck Institute of
- 00:34Biological Cybernetics in Tubingen.
- 00:37He completed his PhD at
- 00:39the University of Plymouth in
- 00:40the UK
- 00:42under the supervision
- 00:43of Andy Wills,
- 00:45And his research focuses
- 00:47on modeling human heterogeneity,
- 00:50with a specific interest in
- 00:52how intelligent systems
- 00:54fail and also effect centric
- 00:56research on what intelligent systems
- 00:59fail and then with a
- 01:00focus on non uniform generalizations
- 01:02of learned experience.
- 01:05And beyond that, Leonard has
- 01:06also created innovative frameworks for
- 01:08large scale model comparisons
- 01:10and most recently
- 01:12developed a modeling toolbox for
- 01:14computational psychiatry and cognitive behavioral
- 01:17tasks,
- 01:18in Tobias Haus' lab.
- 01:20And as an early adopter
- 01:21of this,
- 01:22toolbox myself, I can personally
- 01:24vouch for how incredibly useful
- 01:26it is.
- 01:27And, yeah, we're very excited
- 01:28to hear more about it
- 01:29today.
- 01:31So with that, I'll hand
- 01:32over to Leonard.
- 01:35Thank you very much, Alisa.
- 01:37So I'm just gonna share
- 01:38my screen. Hopefully, nothing's gonna
- 01:40break.
- 01:43Amazing. It seems like it's
- 01:44shared. Do you guys see
- 01:45it?
- 01:46Mhmm. Yeah. Great. So hi.
- 01:49I'm Leonard. Yeah. And I'm
- 01:51joining from Germany, Tuebingen.
- 01:53And I'm gonna talk about
- 01:55this science software,
- 01:56CPM, that we built to
- 01:59kinda help you and support
- 02:00you
- 02:01getting your
- 02:02theory theory and modeling done
- 02:04in computational psychiatry.
- 02:05Now,
- 02:07in the talk, I will,
- 02:08of course, introduce some of
- 02:10our rationale
- 02:12and going to
- 02:15I'm going to,
- 02:17walk you through how to
- 02:18interact with the toolbox and
- 02:19then
- 02:20emphasize some features that might
- 02:22be like,
- 02:23that I think are very
- 02:24prominent
- 02:25in our designs.
- 02:27So computational modeling is in
- 02:29the name, of course, so
- 02:30I'm going to start off
- 02:31by
- 02:33giving some rationale of why
- 02:35we are using computational models
- 02:36to begin with. My favorite
- 02:38take on this is that
- 02:39models are
- 02:41essentially
- 02:42implementations
- 02:43of specific theories, psychological theories
- 02:45that we have about how
- 02:46humans work.
- 02:48So models are
- 02:49essentially just ways to remove
- 02:51the theory from the brain
- 02:52of its authors. I love
- 02:54it because it means that
- 02:55those are independent.
- 02:57So no matter who you
- 02:58are, no matter the prestige,
- 03:00the model is very specifically
- 03:02says something should happen so
- 03:04we can
- 03:05clear directly compare it with
- 03:07observations
- 03:08that we make in our
- 03:09experiments
- 03:10and what is either wrong
- 03:12or right.
- 03:13And if it's, like,
- 03:15adequately right, we can generate
- 03:17hypotheses from these models.
- 03:18And we can do these
- 03:19things because the models are
- 03:21essentially ambiguity reduction machines.
- 03:24They are make us
- 03:26like, force us to be
- 03:27very precise about
- 03:29what we think psychological processes
- 03:31are, how they work so
- 03:33that they can make very
- 03:34specific and precise predictions that
- 03:37we can, as I said,
- 03:38compare with human behavior.
- 03:39And this,
- 03:40and these two features, I
- 03:42think, one of the more
- 03:43important ones for computational psychiatry
- 03:46because we are interested in
- 03:48how cognitive impairment can be
- 03:49translated into symptoms. Models
- 03:52have mechanisms
- 03:53that are very clearly defined.
- 03:55So we can map any
- 03:57kind of, like, change
- 03:58in those mechanism
- 03:59to how symptoms manifest in
- 04:02certain mental disorders.
- 04:03And
- 04:05they are very precise,
- 04:06so they can make very
- 04:08specific predictions
- 04:09about behavioral and clinical data.
- 04:11And this is very important
- 04:13because clinical data is very
- 04:14precious.
- 04:15Clinical data is hard to
- 04:16acquire. There are a lot
- 04:17of ethics surrounding it, so
- 04:19it takes a lot of
- 04:20time to even get to
- 04:21the point where you can
- 04:21collect it
- 04:23and often involves, like, a
- 04:25lot of effort. So you
- 04:26don't want to
- 04:28mess around a lot with
- 04:29the data.
- 04:30You want to make want
- 04:32to be able to be
- 04:33very precise and very robust.
- 04:35So models help with those
- 04:37type of inferences.
- 04:38And, eventually, hopefully, this kind
- 04:40of, like, feeds into how
- 04:42we design interventions because models
- 04:44help us to further our
- 04:46understanding about these cognitive processes
- 04:48and how they are translated
- 04:50to symptoms.
- 04:51Now this is all good.
- 04:52It sounds great as a
- 04:53sales pitch for combinational psychiatry.
- 04:55Unfortunately,
- 04:56it's not that simple.
- 04:58Computational modeling relies on huge
- 05:00amounts of code written by
- 05:01nonexperts.
- 05:03Usually, the PhD students who
- 05:04come to come into
- 05:06the field because they want
- 05:07to study mental disorder, not
- 05:09because they want to study
- 05:11low level programming or figure
- 05:13out how to parallelize
- 05:14on CPU course without breaking
- 05:16the computer. Right?
- 05:18And that leads us to
- 05:20the problem of, like,
- 05:21everybody writing their own code.
- 05:23Everybody reinventing the wheel a
- 05:25lot of times across different
- 05:26labs. So it's resolved in
- 05:28this kind of fragmentation
- 05:29when there are a lot
- 05:30of changes made in the
- 05:32code that the so that
- 05:34it works for your specific
- 05:35use case, so for your
- 05:36specific
- 05:38for your specific experiment.
- 05:39And this results in a
- 05:40lot of inconsistencies
- 05:42in how model is applied
- 05:44and inconsistencies
- 05:45in how methods or parameter
- 05:47estimations are carried out. Now
- 05:49this is a problem because
- 05:51it means there are undocumented
- 05:53assumptions in the code often
- 05:55buried under thousands of lines
- 05:56of code that no human
- 05:58wants to read. Now you
- 05:59can ask chat GPD to
- 06:00read it, but that still
- 06:02involves an extra effort in
- 06:03the process.
- 06:04And these
- 06:06and these codes, of course,
- 06:08have very weak documentations.
- 06:10These are not simply undocumented.
- 06:12They are often just like
- 06:13code comments
- 06:14that you have to find
- 06:16and you have to look
- 06:17for.
- 06:17And
- 06:19this
- 06:20this kind of creates a
- 06:21huge barrier for adoption and
- 06:23creation creates a huge barrier
- 06:25for repreusability
- 06:26as well. It's it's this,
- 06:28it worked on my laptop
- 06:30moments. I know we all
- 06:31encountered it that some code
- 06:33ran for,
- 06:34my,
- 06:36PhD peer laptop, but it
- 06:38did not run on my
- 06:38laptop. It's a it's a
- 06:40very common experience.
- 06:41And this reproducibility is a
- 06:43huge issue because we are
- 06:44dealing with clinical data. We
- 06:46are dealing with interventions that
- 06:47and we hope to apply
- 06:49what we find in our
- 06:50research.
- 06:51But
- 06:52this is the reproducibility
- 06:54is a requirement for it.
- 06:57So in on top of
- 06:59these two things,
- 07:02they kinda interact to create
- 07:03these, like, very high technical
- 07:05barriers so that when people
- 07:06come in,
- 07:07they have to learn a
- 07:08lot of jargon. They have
- 07:09a lot of, like, inaccessible
- 07:11technical terms that they have
- 07:12to figure out, especially if
- 07:14you code. It's,
- 07:15it can be a quite
- 07:16daunting process.
- 07:18And this results in very
- 07:19slow onboarding. It takes time
- 07:21to learn. Often when we
- 07:23hire intern here as well,
- 07:24we want to make sure
- 07:26that they have programming experience
- 07:28because it's much easier to
- 07:30teach psychology to people than
- 07:31coding.
- 07:33It's, unfortunate, but it is
- 07:34true. And
- 07:36that,
- 07:37results in a very limited
- 07:38reuse of the code and
- 07:40the implementations that people share.
- 07:43So what we think is
- 07:44a solution for at least
- 07:45some of it or at
- 07:46least to alleviate this problem
- 07:47somewhat
- 07:48is that,
- 07:50we need shared, transparent, and
- 07:52tested workflows,
- 07:53something that is accessible, something
- 07:55that is tested,
- 07:56and can be reliable.
- 07:58Enter CPM. Now CPM is
- 08:00a Python library.
- 08:02It is an open source
- 08:03in general purpose like a
- 08:04toolbox for computational modeling, and
- 08:07it does exactly what, what
- 08:09I just said said we
- 08:10want, implements standardized workflows.
- 08:13Now it covers all aspects
- 08:15like simulation, fitting, model comparison,
- 08:17and evaluation.
- 08:18And it does so by
- 08:20having,
- 08:21this level of modularity
- 08:24that tasks, models, inference, metrics
- 08:26are all kinda
- 08:27implemented in a way that
- 08:28they can be be swapped
- 08:30so that people can play
- 08:31around.
- 08:32Mistakes are not costly.
- 08:34You can just, like, swap
- 08:36components. You swap the model.
- 08:38You swap the optimizer.
- 08:39And it's very easy to
- 08:41just, like, play around and
- 08:42experiment,
- 08:43which is really a really
- 08:44good educational tool as well,
- 08:45but also helps you to
- 08:47figure out what is going
- 08:48on inside your research.
- 08:51And this modularity is the
- 08:52one that really helps
- 08:54with accommodating novices and also
- 08:56power users. Now if you're
- 08:58a novice, you probably want
- 08:59to get going with things.
- 09:01You want to have some
- 09:02success early on in the
- 09:04modeling, in your modeling journey
- 09:05because that helps you to
- 09:07develop competence. So this modularity
- 09:09allows people to
- 09:11enter at the stage that
- 09:12is appropriate for their experience
- 09:14so they can get on
- 09:15with very established, standardized workflows.
- 09:18Or
- 09:19if they gain competence or
- 09:21you are power they are
- 09:22power users, they can mix
- 09:24and match and also hack
- 09:25the system.
- 09:26So this modularity helps us
- 09:28quite a bit in accommodating
- 09:30both novices
- 09:31and more,
- 09:33like, nerds.
- 09:35The the main thing that
- 09:37I wanna get across here
- 09:38is that our goal here
- 09:39with the standardization, with the
- 09:41modularity, is that
- 09:43we want to make sure
- 09:44that people spend more time
- 09:46on science and less on
- 09:48glucose.
- 09:49Now the situation is that
- 09:52a lot of the time
- 09:53spent around with cleaning data
- 09:55and developing, like, code that
- 09:57loops through trials, that organizes
- 09:59your results, that organizes things
- 10:01in pendant data frames or,
- 10:02like, any kind of, like,
- 10:03r data frames.
- 10:05And that's and that's a
- 10:06lot of time spent on
- 10:07not the actual problem, but
- 10:08just the tidying and the
- 10:09dusting of your results or
- 10:11simulation outputs.
- 10:13That's something that we want
- 10:14to, like, take off people's
- 10:17shoulder shoulders so they can
- 10:18actually spend time on the
- 10:19scientific problem as opposed to
- 10:21the technical one.
- 10:23And CPM is fairly new.
- 10:25Yeah. Here I have a
- 10:26bit of a timeline that
- 10:27first official release was in
- 10:29twenty twenty five July
- 10:31just before the CPC happened
- 10:33in Tubingen,
- 10:34the computational
- 10:35conference.
- 10:36And in September,
- 10:39a preprint follow followed, which
- 10:41the QR code, like, takes
- 10:43you to the OSF website
- 10:44where you can find the
- 10:45preprint.
- 10:46And
- 10:48by this time, the toolbox
- 10:49was
- 10:50available for free as in
- 10:52freedom.
- 10:53We shared it on the,
- 10:55on the Python library archive
- 10:56for PyPI
- 10:58so people can install it
- 10:59as easily as just typing
- 11:00some command in into the
- 11:02terminal or in the Python,
- 11:04Python terminal. You can just
- 11:06copy paste whatever's on the
- 11:07website. There are, like, a
- 11:08lot of instructions there.
- 11:11But the September was the
- 11:12latest release when we added
- 11:14a few prospect theory based
- 11:16models to the mix. So
- 11:17now we kinda, like, beyond
- 11:19the simple reinforcement learning problems.
- 11:22And
- 11:23the latest release has been
- 11:24downloaded
- 11:25as of January by about,
- 11:27like, one thousand people. Now
- 11:30whether they used it or
- 11:31not, at least they checked
- 11:32it out.
- 11:33And there is some traffic.
- 11:35And since then, there were,
- 11:35like, contributions outside of the
- 11:37lab where people fix bugs,
- 11:39people made feature implementations
- 11:41so that they, the toolbox
- 11:43runs better on their computer.
- 11:45So there are some traffic,
- 11:47generated just by, like, putting
- 11:49things
- 11:50out there for free available
- 11:51for people.
- 11:54Now do not worry about
- 11:55what's on the slide, to
- 11:56be honest. This is just
- 11:57demonstrates
- 11:58that
- 11:59the toolbox is not just
- 12:01that. It's not just that
- 12:02we shared it out there
- 12:03and it's available and you
- 12:04can write on your computer.
- 12:06The toolbox come with an
- 12:07ecosystem. There's a whole infrastructure
- 12:09in place for documentations,
- 12:11for tutorials, and this is
- 12:12two example of the documentation
- 12:14where we have extensive, like,
- 12:16information about where
- 12:18certain things come from, what
- 12:19are the theoretical backgrounds of
- 12:21the methods we implement. And
- 12:22especially for the models, we
- 12:24have equations, references,
- 12:26and
- 12:27explanations of the default settings
- 12:28or what are the edge
- 12:29cases that we cover. This
- 12:31is important because most people
- 12:33when they end up,
- 12:35writing their paper, they
- 12:37often forget what they have
- 12:38done with the modeling or
- 12:39what the equations were. And
- 12:41these documentations essentially
- 12:43help you to get access
- 12:45to these type of informations
- 12:46and also for us to
- 12:48be very transparent
- 12:49about what we are doing.
- 12:51And if you're a bit
- 12:53more, more of a nerd,
- 12:54if you have more, experience
- 12:56with these type of, like,
- 12:57models that are more sophisticated,
- 13:00this is very useful for
- 13:01you because you know what
- 13:03you're do
- 13:04doing. You know what type
- 13:06of model you are accessing
- 13:07when you interact with the
- 13:08toolbox.
- 13:10Beyond the documentations, we have,
- 13:11like, extensive tutorials.
- 13:13So I think the Wilson
- 13:14and Collins paper that was,
- 13:16like, really big. If you
- 13:16don't know it, don't worry
- 13:17about it,
- 13:19Had a bunch of recommendations
- 13:21about what is a good
- 13:22model evaluation technique and what
- 13:24you should do with your
- 13:25models before you conclude or
- 13:27put faith in your results.
- 13:29Now those things we try
- 13:31to cover in the tutorials
- 13:33with the toolbox. The toolbox
- 13:34has features to cover to,
- 13:36that is,
- 13:38in line with the standard
- 13:39recommendations
- 13:40made by the field.
- 13:43And this is kind of
- 13:44a, like, a balance between
- 13:45being a bit didactic, educational,
- 13:48and also letting you just
- 13:50to copy paste stuff into
- 13:51your own, like, workspace.
- 13:53We are leaning towards more
- 13:55of the educational side because
- 13:56we are aiming at nonexperts.
- 13:58And nonexperts,
- 14:00we should be able to
- 14:02have this information available even
- 14:04though that
- 14:05they will likely, like, copy
- 14:06paste things into their own
- 14:07workspace.
- 14:08And we have these tutorials
- 14:10written, checked in
- 14:11Jupyter notebooks. If you're not
- 14:13familiar with the term, it's
- 14:14essentially just a way
- 14:16so that you can run
- 14:18it on on the website
- 14:20and or to generate reports
- 14:21about these techniques.
- 14:24Alright. Now that I have
- 14:25a bit of an interaction
- 14:26of what the toolbox is,
- 14:27before I go into the
- 14:29actual workflows and the tutorial,
- 14:31there are some things that
- 14:32I
- 14:33want to say about boundaries
- 14:35that there are things we
- 14:37are not covering so we
- 14:38can stay relatively stay same
- 14:40and uninterrupted.
- 14:42So I'm not gonna talk
- 14:42about the math behind the
- 14:43models. You can all obviously
- 14:45ask me about these things.
- 14:46I'm not gonna talk about
- 14:47different optimizer we have. We
- 14:49can I can also tell
- 14:50you or you can just
- 14:51go to the website and
- 14:52check it? I'm not gonna
- 14:53talk too much about the
- 14:54architecture
- 14:55or the engineering of the
- 14:56toolbox. And I I'm in
- 14:58no way or shape is
- 15:00qualified to make clinical claims.
- 15:01I'm, I'm, developing toolbox here.
- 15:04So this is not a
- 15:05diagnostic tool. We it's it's
- 15:07it's a tool to help
- 15:08you get your modeling done.
- 15:10So I'm what I'm gonna
- 15:11focus on is instead how
- 15:13you interact with the toolbox,
- 15:15what it enables you to
- 15:16do, and
- 15:18talking about at a more
- 15:19high level about how to
- 15:20get your modeling done with
- 15:22the toolbox.
- 15:24So
- 15:26to start
- 15:27off with that,
- 15:28we
- 15:29have here very minimal
- 15:32very and very minimal and
- 15:33barebone, like, modeling workflow.
- 15:35On the left, you have
- 15:36your data that is ready
- 15:38to input into the toolbox.
- 15:40You have the model
- 15:42that you want to use.
- 15:44You have a likelihood, which
- 15:46is essentially just a way
- 15:47to compare the
- 15:49how different your model behavior
- 15:51is from the data.
- 15:53And then you have the,
- 15:54have the optimizer, which essentially
- 15:56estimates your parameters and find
- 15:58the, those parameters
- 16:01that
- 16:02have you,
- 16:03that help you minimize the
- 16:05difference between your data and
- 16:06the model you have.
- 16:09Now this is very minimal,
- 16:10and this is, of course,
- 16:11in more sophisticated approaches like
- 16:13parameter recovery or
- 16:15model recovery. This is embedded
- 16:18into the bigger workflow, but
- 16:19this is just to demonstrate
- 16:20what the toolbox covers here.
- 16:23Now when we started out,
- 16:25we
- 16:26focused on building and constructing
- 16:29models
- 16:30and making sure that you
- 16:31have the right tools to
- 16:32compare model outputs to your
- 16:34data
- 16:35and to make sure that
- 16:36you can actually estimate parameters
- 16:38on your data.
- 16:40This was, like, the very,
- 16:41very beginning, and this is
- 16:43where the toolbox is more
- 16:44most developed.
- 16:46But as time went by,
- 16:48we added a bunch of
- 16:49other features. So in order
- 16:51to cover cover, like, the
- 16:52model evaluation technique techniques that
- 16:54are kinda like the field
- 16:56is converging towards, we implemented
- 16:58features that cover generating artificial
- 17:01data to evaluate your models.
- 17:03We develop feature to have,
- 17:05like, hierarchical parameter estimation techniques.
- 17:08Again, if you're a bit
- 17:09unsure what hierarchical parameter estimation
- 17:11means, don't worry about it.
- 17:12We're gonna talk a bit
- 17:13about it later. It's just
- 17:15a very fancy term to
- 17:16say that you can estimate
- 17:19group
- 17:20level, like, latent variables in
- 17:23a very sophisticated and powerful
- 17:24ways, but,
- 17:26more on that later. And
- 17:28at this point in time,
- 17:30we are
- 17:31working a lot on making
- 17:32it easier for you to
- 17:34transition from your experimental data
- 17:36to a data format that
- 17:38is that's that's the tool
- 17:40that the toolbox prefers.
- 17:42And this, comes,
- 17:45because we also want to
- 17:47make sure that the toolbox
- 17:48can interact with,
- 17:50recruitment platforms. For example,
- 17:52we have the Brain Explorer
- 17:54app in the lab, which
- 17:55is essentially a mobile app
- 17:56where we collect a lot
- 17:57of data. Now those data
- 17:59come out in a certain
- 18:01format, not particularly like suited
- 18:03for modeling straight on. We
- 18:05want to bridge that gap.
- 18:06So our goal is that
- 18:07you get your experimental data,
- 18:09you input it in a
- 18:10function,
- 18:12define some variables, and then
- 18:13it outputs it in a
- 18:14format that is accessible by
- 18:16the built
- 18:18models. So yeah?
- 18:21Quick question.
- 18:24Does this,
- 18:27transition from data to model
- 18:28incorporates
- 18:29all these usual data cleaning
- 18:32steps that can be,
- 18:34very complicated?
- 18:36Or is it expected that
- 18:37people upload data that
- 18:39is already cleaned and reprocessed
- 18:42and you know? So that
- 18:43that part where I find
- 18:44there is a lot of
- 18:44difficulties in the field.
- 18:46Yeah. There are two things.
- 18:48So you, in a sense,
- 18:49you don't really upload data
- 18:50anywhere. It's, it's all happening
- 18:52on the computer, and I
- 18:53think I just, like, wanna
- 18:54make it clear so there
- 18:55are no misunderstanding.
- 18:57Because if you upload data
- 18:58anywhere, there are all sorts
- 18:59of privacy concerns that we
- 19:01don't want to deal with.
- 19:02So that's that. The second
- 19:04bit is that we don't
- 19:06filter data on that side.
- 19:09One reason is that there
- 19:11are so many
- 19:12factors that contribute to you
- 19:14excluding a participant, for example,
- 19:16or excluding a trial that
- 19:18it can't be determined prior
- 19:20to you looking at your
- 19:21data.
- 19:22So So you don't include
- 19:23some sort of flags,
- 19:25saying that be careful.
- 19:27You you're dealing with this
- 19:28and that.
- 19:29That would be very useful,
- 19:30I think. We do have
- 19:31that in, like, built in
- 19:33stuff. So especially in the
- 19:34parameter estimation part,
- 19:37we do have this information
- 19:38available that there is if
- 19:39there is some problem,
- 19:40we're gonna give you an
- 19:41error message. And if if
- 19:43something happened, you're gonna have
- 19:45it in the output
- 19:46documented for you.
- 19:48We do have, like Yeah.
- 19:49Because, of course, of course,
- 19:50the concern is that,
- 19:52is,
- 19:53you make this pipeline more
- 19:55user friendly,
- 19:57users
- 19:58might invest less
- 20:00time into thinking through the
- 20:01data, and then all kinds
- 20:03of
- 20:04results that come from just
- 20:06by distributional
- 20:07outliers might very quickly show
- 20:08up. Right?
- 20:10Yeah. That was one of
- 20:10my main concerns as well
- 20:12is that in order
- 20:13some people say that in
- 20:14order to really understand the
- 20:16model, you have to program
- 20:17it. But that, again, that
- 20:18is, like, kinda like a
- 20:20creates another problem. And making
- 20:21things more accessible,
- 20:23does reduce the time you
- 20:26spend on thinking things,
- 20:28thinking about things. We do
- 20:29have a bunch of error
- 20:30messages, and we
- 20:32continually increase the number of,
- 20:33like, FYI information that we,
- 20:35like, tell you. You know?
- 20:37In the metacognitive
- 20:38pipeline, we have a, a
- 20:40model, the meta d model.
- 20:42Some people might have heard
- 20:43about it. We do have
- 20:47ways to estimate, like, metacognitive
- 20:49performance in perceptual decision making
- 20:51tasks.
- 20:52And during those, we still
- 20:54require people to input, like,
- 20:56raw data
- 20:57and all the data aggregation
- 20:59or the calculating of mean
- 21:00or sorting data into things.
- 21:04We do check for all
- 21:06sorts of things, like whether
- 21:07there are empty bins, whether
- 21:09there are, like, bimodal distributions
- 21:11in the data and those
- 21:12type of stuff that we
- 21:13tell,
- 21:15people when they are running
- 21:16the,
- 21:17the optimization, when they're running
- 21:18these models.
- 21:22This is not complete, of
- 21:24course, because, well, there are
- 21:25a lot of error messages
- 21:26that you could potentially get.
- 21:28You yeah. You cannot, you
- 21:30know, you cannot make it
- 21:31algorithmic. Right? It's, a lot
- 21:33of things are very unpredictable.
- 21:34And Yes. Okay. And it's
- 21:36I don't know about
- 21:38you. I often find it
- 21:40the case that I don't
- 21:40know there's a problem until
- 21:42I come across one and
- 21:43start to do something that
- 21:44the models were not designed
- 21:46for.
- 21:46But then again, the
- 21:48the goal of the toolbox,
- 21:50especially to figure that one
- 21:51out. So this modular approach
- 21:52that we have allows you
- 21:54to stop at any point
- 21:55in your pipeline
- 21:57to make sure to investigate
- 21:58what is going on. So
- 21:59if you have a model,
- 22:00you can try to understand
- 22:01it before you just put
- 22:02it through, and we have
- 22:04features
- 22:05that lets you
- 22:07organize the model model output
- 22:08so that you can actually,
- 22:10plot and see what is
- 22:11going on, you know, behind
- 22:13the scenes under the hood.
- 22:16Oh, yeah. Alright. I'm gonna
- 22:17move on. Is there any
- 22:19other questions about these, error
- 22:20messages?
- 22:24I'm gonna just, like, get
- 22:26on then.
- 22:27So
- 22:28now I'm gonna, like,
- 22:30start with the walkthrough.
- 22:32So it it's gonna be
- 22:33a lot of hypothetical scenarios.
- 22:35So
- 22:36imagine that you're,
- 22:38designing an experiment with the
- 22:39two armed bended tasks. I'm
- 22:41going to explain how the
- 22:42task works in a second.
- 22:44You want to investigate, like,
- 22:45differences in learning between groups.
- 22:47You want to compare
- 22:49groups like neurotypical and neurotypical
- 22:51populations,
- 22:52for example, people with attention
- 22:54deficit
- 22:54hypertrophy disorder. And,
- 22:58experiment, for example, involves some
- 23:00manipulation, like distractors in the
- 23:02while you learn.
- 23:04And your goal is to
- 23:06estimate some latent variables like,
- 23:09learning rates that are captured
- 23:11by the parameters of the
- 23:12model.
- 23:14So what you start with
- 23:16is the task.
- 23:18In these two armed bandit
- 23:20tasks, you usually have two
- 23:21items appearing on screen, and
- 23:23you have to select one
- 23:24of them.
- 23:25You select one of them.
- 23:26You receive a feedback in
- 23:27the form of number of
- 23:29points that you got.
- 23:30And here, I selected the
- 23:32right one.
- 23:33Then I have plus hundred
- 23:35points.
- 23:37Now
- 23:38I move on to the
- 23:39next trial.
- 23:40Another two item appears. I
- 23:42get feedback. I get a
- 23:43certain amount of points, and
- 23:45I have to figure out
- 23:46which choice give me the
- 23:47most points.
- 23:48And as time goes by,
- 23:50there's an underlying structure in
- 23:52this task so that some
- 23:53items result in more points
- 23:55while other items result in
- 23:57less points.
- 23:58And that's the learning problem
- 24:00essentially. You have to learn
- 24:01which choice gives you the
- 24:02most points.
- 24:05Now
- 24:06after these experiments, you end
- 24:07up with your data, and
- 24:09that's where you
- 24:10start you can enter into
- 24:12the toolbox.
- 24:13Now this is a built
- 24:14in dataset in the toolbox
- 24:15that I'm see that I'm
- 24:16showing you right there, and
- 24:18don't worry about it too
- 24:19much the lines of code.
- 24:24The data is more important
- 24:25here because that, that tells
- 24:27us something important.
- 24:29So these built in datasets
- 24:31essentially just to help you
- 24:33start your modeling before the
- 24:35data actually collected. So for
- 24:36the case that you have
- 24:37to wait, that the collection
- 24:39is going on, so there
- 24:40is no restriction about when
- 24:42you can start your modeling
- 24:44in your project.
- 24:45So these datasets are just
- 24:46like examples, and these are
- 24:47the datasets that the built
- 24:49in models also take. Something
- 24:51that we talk about it
- 24:52later.
- 24:54Now the important bit here
- 24:56is that each row in
- 24:57the data
- 24:59represents one trial,
- 25:00and each row has to
- 25:02contain all the information that
- 25:04the model needs
- 25:05to calculate, like, probability of
- 25:07response or whatever you want
- 25:08to want it to calculate.
- 25:10Each row,
- 25:11contains both,
- 25:12the experimental
- 25:14variables and also what the
- 25:16feedback was or what the
- 25:17human responded in the on
- 25:19that given trial.
- 25:22And and this is how
- 25:23the data organized. This is
- 25:25a long format data. So
- 25:26if you're familiar with the
- 25:27term, it just means that
- 25:29it's,
- 25:31it's long as opposed to
- 25:33wide.
- 25:34So the data is organized
- 25:35as row by row and
- 25:37not column by column.
- 25:40Now if you have this
- 25:41data, this is how it
- 25:42will look, and this is
- 25:43what the new features will
- 25:45enable you to convert your
- 25:46data to.
- 25:49You have to start about
- 25:51what kind of models you
- 25:52want to use. You have
- 25:53to either build a model
- 25:54or you have or you
- 25:55can use one of the
- 25:56built in ones. Now if
- 25:57you choose the easy way,
- 25:59we have models that we
- 26:01prebuilt,
- 26:02models that we tested, that
- 26:04we made sure they work.
- 26:06All these models have some
- 26:07sort of, like, a backing
- 26:09in terms of, like, peer
- 26:10reviewed literature.
- 26:11And
- 26:12the number of models are
- 26:14always increasing. We're already working
- 26:15on to incorporate, like, the
- 26:17model based model free learning,
- 26:19free learning models
- 26:21just,
- 26:22just as as a sort
- 26:23of archival process where you
- 26:25can just, like, pick one
- 26:26out,
- 26:27as in, like, an application
- 26:29that you send your data
- 26:30to.
- 26:32And here,
- 26:34you can just
- 26:36have to define certain parameters
- 26:38for the model,
- 26:40not the free parameters.
- 26:42What I mean is that
- 26:43we try to make sure
- 26:44that models are scalable.
- 26:45Not all of them are
- 26:46scalable at the moment, but
- 26:48we're working hard on being
- 26:49scalable. So the model that,
- 26:51you see here, the r
- 26:53l r v RW,
- 26:55is
- 26:57able to take in any
- 26:58number of stimuli. It's not
- 26:59just a two arm benefit
- 27:01problem. It can take in,
- 27:03like, four, six, seven, eight,
- 27:04nine, ten
- 27:05bandwidth at a time. So
- 27:06this,
- 27:08the model is scalable
- 27:10to new experiments, to more
- 27:11complex experiment, and that is
- 27:12important because that helps kind
- 27:14of, like, the comparison process
- 27:15to other models as well.
- 27:17And you don't have to
- 27:18rewrite your code all the
- 27:19time to apply it to
- 27:20your new experiment if you
- 27:22change something,
- 27:23and that's something that we
- 27:24also try to facilitate.
- 27:28If you decide to write
- 27:30your model for scram from
- 27:31scratch because you are very
- 27:32advantageous,
- 27:33adventurous,
- 27:35Then the toolbox
- 27:37helps you by,
- 27:39having these two steps. So
- 27:41the modeling is broken down
- 27:42into two two steps.
- 27:44One is handled by what
- 27:45I call the parameter management
- 27:47system, which is a very
- 27:47fancy way of saying that
- 27:49it helps you to store
- 27:51and to define your parameters,
- 27:53like learning rates, so how
- 27:54fast people learn, how much
- 27:56new information they retain, or,
- 27:58like, the decision rules so
- 28:00that how decisive people are,
- 28:02which is the temperature down
- 28:04there and offers learning rate.
- 28:06So
- 28:07when you're doing this, you
- 28:08have to define a bunch
- 28:09of things that you might
- 28:11not you might not know.
- 28:14One thing that we really
- 28:16enforce is the lower and
- 28:17upper bounds of parameters.
- 28:19It's often the case that
- 28:21people do not
- 28:22explicitly state these things in
- 28:24their paper or even in
- 28:25their codes. It requires a
- 28:26lot of digging to figure
- 28:27it out. And that is
- 28:29a problem because it has
- 28:30been shown that in a
- 28:31lot of cases,
- 28:33these bounds matter because these
- 28:34bounds determine,
- 28:36when the model behavior is,
- 28:37like, consistent or, like, sensical.
- 28:40And with some parameter combination,
- 28:42the model becomes, like, nonsense
- 28:44nonsensical and, you know, gets
- 28:45out of hand. And we
- 28:47have to know,
- 28:48whether the model succeeds
- 28:50within these, like, bounds where
- 28:52it makes a reasonable prediction,
- 28:53where the intermediate variables it
- 28:55calculates are reasonable.
- 28:57And this is, essentially just
- 28:59a practice that we're trying
- 29:00to enforce here.
- 29:01Similar with the priors. Now
- 29:03if you don't know what
- 29:04priors are, they're essentially just
- 29:06another constraints on the parameters.
- 29:09And those are something that
- 29:10we also expect people to,
- 29:12to select to explicitly say
- 29:15what the priors and the
- 29:15parameters are. Again, to enforce
- 29:17some standard practices that, we
- 29:19would like people to have
- 29:21in the field.
- 29:23These are all,
- 29:24like, accompanied by support from
- 29:26the documentation. So if you
- 29:27don't know where to begin,
- 29:28you can just, like, go
- 29:29to the website and you
- 29:31can,
- 29:32you can find the
- 29:34right,
- 29:35the right answer for you.
- 29:38Now this parameter management system
- 29:41takes care of other things
- 29:42than the parameters as well.
- 29:44So in the learning task
- 29:45that we just had before,
- 29:47it is safe to assume
- 29:48that people don't have prior
- 29:50beliefs how those cartoon images
- 29:53result in rewards.
- 29:55That means that each subjective
- 29:57value
- 29:58associated
- 29:58with those items
- 30:00will have a starting value
- 30:02of zero, which means that
- 30:04we don't know what those,
- 30:07what the rewardingness of those
- 30:09items are. And that's something
- 30:11that the toolbox also, like,
- 30:13saves by
- 30:14defining it in the parameter
- 30:15management system.
- 30:17And all these things, the
- 30:18extra things that that you
- 30:20define here will be,
- 30:21kept track of. So if
- 30:23you want something to update
- 30:24incrementally,
- 30:26like on every trial, for
- 30:27example, you can define it
- 30:28in this parameter management system,
- 30:30and then the toolbox will
- 30:32update it for you. It
- 30:33will organize it for you,
- 30:35and it will output it
- 30:36for you with a reasonable
- 30:38names and in reasonable date
- 30:39format. So this is, again,
- 30:41in order to reduce the
- 30:43number of
- 30:44all lines of codes that
- 30:45you have to write to
- 30:46keep track of things, to
- 30:48keep your data tidy is
- 30:49reduced because this is something
- 30:50that
- 30:51we are taking care of,
- 30:52the technical bits.
- 30:55Now after if you have
- 30:56your parameters already done, you
- 30:57can move on to the
- 30:59model execution framework, which is
- 31:01essentially just like a way
- 31:02to build your models.
- 31:04In this step of model
- 31:05building, the only thing that
- 31:07you have to do is
- 31:07to write a function
- 31:09that tells the model what
- 31:11to do on every trial.
- 31:13So the only thing that
- 31:14you have to be concerned
- 31:15about is what happens on
- 31:16a single trial.
- 31:17So if it's a learning
- 31:18model, then, of course,
- 31:20it it makes a response.
- 31:21It updates
- 31:23its belief about how rewarding
- 31:25each item is, and that's
- 31:26the only thing that you
- 31:27have to be concerned about.
- 31:29You don't have to worry
- 31:30about how you, how you
- 31:32save the results after each
- 31:33trial, how you organize it,
- 31:35how you apply it to
- 31:36your data row by row.
- 31:38That is taken care of
- 31:39you, by the toolbox. Again,
- 31:41the technical bits are on
- 31:43us, and you can focus
- 31:44on what the computations are,
- 31:46what you want the model
- 31:47to do.
- 31:49Now one solution here is
- 31:51to write things from scratch.
- 31:52So in this function between,
- 31:55the input and between what
- 31:56the function outputs, you have
- 31:58you can write things from
- 31:59scratch, and you can look
- 32:00at equation. You can
- 32:02write it out, like, to
- 32:03match exactly what happens on
- 32:05the on the paper that
- 32:07you just like using.
- 32:09But we do have have
- 32:11for you. So we have
- 32:14these things that I call,
- 32:16more computational LEGO blocks
- 32:18that we have a bunch
- 32:19of, like, decision rules and
- 32:21learning rules that we already
- 32:22implemented so you can just
- 32:24stick it into your model
- 32:25and get running.
- 32:26And these are designed
- 32:28so that they
- 32:30handle edge cases and they
- 32:31handle certain, like, out of
- 32:33bounds parameters as well,
- 32:35and tell you about these
- 32:37things.
- 32:38Now the goal of this
- 32:39is that there are a
- 32:41bunch of equations out there
- 32:42that you have to stitch
- 32:43together in order to make
- 32:44your model. Now those
- 32:46equations are often reused. So
- 32:49softmax is always the same.
- 32:51It's not gonna change when
- 32:52you're using it in a
- 32:53new paper or in a
- 32:54new project. So we implemented
- 32:56it so that you can
- 32:57just, like, stick it in.
- 32:58It
- 32:59is, again, scalable to any
- 33:01number of, like, choice options.
- 33:02So you can use it
- 33:04in all,
- 33:05in all different experiments that
- 33:07you're running. And that is
- 33:08helpful because then you do
- 33:10not have to reinvent the
- 33:11wheel again. You don't have
- 33:12to, like, rewrite your code.
- 33:14You can use the same
- 33:15thing that worked before in
- 33:17your own, like,
- 33:18project.
- 33:21Now
- 33:22this
- 33:23model building
- 33:24step essentially ends with you
- 33:26defining all the things that
- 33:27you want to save in
- 33:28the model output.
- 33:30Now here,
- 33:32the output contains a bunch
- 33:33of things that I'm interested
- 33:34in, and those are all
- 33:36saved and organized for you.
- 33:38You don't have to bind
- 33:39them together into one big
- 33:41data set. This is something
- 33:42that we take care of.
- 33:44The only one thing that
- 33:46you must define
- 33:49is the dependent variable,
- 33:51what variable you are interested
- 33:52in. So if you're running
- 33:53a learning task,
- 33:54you're interested in people's choices.
- 33:57So the model has to
- 33:58make predictions about what those
- 34:00choices are, and you have
- 34:01to tell us what those,
- 34:05what those choices correspond
- 34:06to in the model. Here,
- 34:08these are, like, the choice
- 34:09probabilities, the output by this
- 34:11decision rule that I mentioned,
- 34:12the softmax.
- 34:14And
- 34:15that is shown on the
- 34:17last line on that output.
- 34:20But, essentially, these these are
- 34:21the steps when you want
- 34:23to create a model from
- 34:24scratch. And after this, you
- 34:26essentially have a model.
- 34:27You input it into
- 34:30a a function we call
- 34:31the wrapper that kinda, like,
- 34:32pulls your parameters and the
- 34:33model function together and applies
- 34:35it to data.
- 34:36And that
- 34:37wrapper is essentially,
- 34:39the one that organizes everything
- 34:41for you.
- 34:42And after you applied it
- 34:43to data, you get an
- 34:44output, something similar to what
- 34:46you see on the bottom
- 34:46where you have a bunch
- 34:48of intermediate variable.
- 34:50Maybe the most salient ones
- 34:51are the errors
- 34:53that you see on the
- 34:54more right side
- 34:55is that the prediction errors
- 34:57on any given trial. These
- 34:58are, again, organized for you,
- 35:00saved. You don't have to
- 35:02worry about, like, combining them
- 35:03together.
- 35:05All the things that you
- 35:05define in the model output
- 35:07are, like can be exported
- 35:08as a CSV file so
- 35:10that you can save it,
- 35:11you can plot it, you
- 35:11can investigate it, and do
- 35:14fancy graphs like this.
- 35:15Now
- 35:17because things are organized for
- 35:18you, you can spend time
- 35:20on understanding
- 35:21how the model works. For
- 35:22example, we have the RLRV,
- 35:25model here.
- 35:27And these are just the
- 35:28what you see on the
- 35:29y axis,
- 35:30the belief about how rewarding
- 35:32certain items are. They are
- 35:33q values if you're familiar
- 35:34with the term.
- 35:36Here, I just picked three
- 35:37random, like, learning parameters. Like,
- 35:39one is, like, slower slower
- 35:42learning that is alpha zero
- 35:43point twenty five, and it
- 35:44reaches, like, quite high because
- 35:46in these models,
- 35:48the maximum learning rates can
- 35:50take is one.
- 35:51That one is zero point
- 35:52eight. And you can you
- 35:53can try to understand what
- 35:54is happening here. You can
- 35:55see that more stable, like,
- 35:57learning takes place when the
- 35:58learning rate is lower and
- 36:00when the learning rate is
- 36:01higher.
- 36:02The, the model is very
- 36:03sensitive to feedback so that
- 36:05beliefs are kinda, like, jiggity
- 36:07and drop very strongly when
- 36:09there is, like, a a
- 36:10change in what you think
- 36:12will happen and what you
- 36:13received.
- 36:14And these are and and
- 36:16this is facilitated by this,
- 36:18like, data organization that we're
- 36:19doing in the background.
- 36:22Of course, at some point,
- 36:24when you will have this
- 36:25model, you don't just wanna
- 36:26play around with it and
- 36:27plot, like, fancy graphs like
- 36:29this, which is part of
- 36:30the tutorial.
- 36:32We want to
- 36:33optimize a little bit and
- 36:34estimate some parameters. We are
- 36:36interested in, you know,
- 36:38how these,
- 36:39latent variables,
- 36:41are captured by these parameters
- 36:43and how they relate to
- 36:44what we're interested in, like
- 36:45the learning differences.
- 36:47Now the toolbox has this
- 36:50optimization frame framework built in,
- 36:52and one disclaimer here is
- 36:53that we do not want
- 36:54to reinvent the wheel.
- 36:56So we don't want
- 36:58to reproduce this code fragmentation
- 37:00that we talked about. So
- 37:02instead of, like, writing things
- 37:03from scratch,
- 37:05we are pulling in is,
- 37:06like, methods and optimization procedures
- 37:09from established libraries like the
- 37:11sci fi, one of the,
- 37:12like, biggest optimization library out
- 37:14there
- 37:14so that
- 37:16we do not, like, introduce,
- 37:18like, unwanted changes and inconsistencies
- 37:20into the code that into
- 37:22methods that are already working.
- 37:25So instead, we're making sure
- 37:26that they are optimized.
- 37:29Those methods from scipy, for
- 37:30example, optimized
- 37:32for computational psychiatry.
- 37:34For example, things like we
- 37:35want to estimate, like, learning
- 37:37rates for each subject as
- 37:38opposed to on the group
- 37:39level
- 37:40so that we make sure
- 37:41that the opt that the
- 37:43these
- 37:44these methods, these optimization functions
- 37:46imported from other libraries,
- 37:49like, do it. So they
- 37:50they are doing fast. They
- 37:51are organizing things for you
- 37:53in that fashion with a
- 37:54single goal of estimating subject
- 37:56level parameters.
- 37:57And all the performance improvements
- 37:59that you might want are
- 38:01also implemented here with that,
- 38:03like, caveat in mind. So
- 38:05on if you're looking through
- 38:06the code, there's a parallel
- 38:08variable there that I just
- 38:09set to true,
- 38:10which means that the
- 38:13the parameter estimation is distributed
- 38:15across like CPU core so
- 38:17that instead of, like, one
- 38:19parameter estimation going on on
- 38:20your computer, there are, like,
- 38:22estimate parameter estimations going on
- 38:24simultaneously
- 38:25as your computer can handle.
- 38:27And that is something that
- 38:28we are also taking care
- 38:29of because we don't want
- 38:30people to
- 38:31to get bogged down how
- 38:33on how to parallelize things
- 38:35in Python because it's not
- 38:36straightforward. And I'm, like, programming
- 38:38for a living. It's not
- 38:39straightforward for me. So I
- 38:41don't expect it to be
- 38:42straightforward for people who just
- 38:43like starting out or people
- 38:44who are non experts.
- 38:46And these and we and
- 38:48that is something that we're
- 38:48also making sure that it
- 38:50works across different operating systems
- 38:52than in different environments, and
- 38:53we have tutorials on how
- 38:54to get it to work
- 38:55in different environments.
- 38:56But, again, those are, like,
- 38:58the technical details.
- 38:59If your simulation is running
- 39:01too, too slow, if your
- 39:03optimization is running too slow,
- 39:05you can just flip a
- 39:06switch inside the toolbox and
- 39:07make it run faster. And
- 39:09that's something that we're also
- 39:10trying to optimize where I'm
- 39:11taking take care of.
- 39:14Essentially, so you have these
- 39:15methods here just stuck in
- 39:16your model. You're stuck in
- 39:17your data. You're, stuck in
- 39:19your,
- 39:20log likelihood, which is, again,
- 39:22the goodness of fit measure
- 39:23of how close the model
- 39:24and the human
- 39:26behavior gets. And then everything
- 39:27is kind of pulled together
- 39:28inside.
- 39:29You don't have to write
- 39:31very low level code about,
- 39:32like, calculating,
- 39:33these goodness of fit metrics.
- 39:35This is something that we
- 39:36have implemented, and you can
- 39:37just, like,
- 39:38pick the right one suitable
- 39:40for you. We are taking
- 39:41care of all the edge
- 39:42cases, all the out of
- 39:43bounds parameters, and all the
- 39:45out of bounds values and
- 39:46infinities there that you don't
- 39:48want to be concerned about
- 39:49while you're trying to
- 39:51start the
- 39:52start your project. Right?
- 39:54So at the end of
- 39:55the day, you run your
- 39:56optimization.
- 39:57And, again,
- 39:59because the toolbox is organized,
- 40:00you can, like, easily investigate
- 40:02how your parameters are distributed,
- 40:04how good your model done,
- 40:05and your goodness of fit
- 40:06metrics. And you can do
- 40:08these things because we organize
- 40:10the data for you. So
- 40:11the tiding and the dusting
- 40:13is, again, taken care of
- 40:14by us, and you can
- 40:15be more concerned about what
- 40:16kind of optimizer you're using,
- 40:18what
- 40:19what do you what are
- 40:20you actually interested in? Are
- 40:21you interested in point estimates,
- 40:22like, or are you interested
- 40:24in posterior predictive, like, distributions,
- 40:26all the fancy words that
- 40:27you might come across? And
- 40:29you can be more concerned
- 40:31about the scientific problem as
- 40:33opposed to the technical one
- 40:34on how to get it
- 40:35working.
- 40:38So
- 40:39the optimization doesn't stop here.
- 40:41One of the biggest things
- 40:42out there is model comparison.
- 40:43And
- 40:45right now, we are working
- 40:47on making it more fluid
- 40:48and more integrated.
- 40:49But we already have all
- 40:51the model comparison metrics that
- 40:52you might want to use,
- 40:53like Bayesian information criterion, the
- 40:55information
- 40:56criterion,
- 40:57and we're getting and we're,
- 40:58of course, increasing that list,
- 41:00minimum description lengths or base
- 41:02factors and all the other,
- 41:03like, standard things that you
- 41:04might want to use.
- 41:08We also have the hierarchical
- 41:10modeling that I mentioned before.
- 41:11So for example, if you're
- 41:12interested in, like, group level
- 41:14estimates, which you might as
- 41:15well be
- 41:16because you want to get
- 41:17a sense of the distribution
- 41:19of learning rates or the
- 41:20distribution of certain, like,
- 41:22latent variables. And
- 41:25that allow and these hierarchical
- 41:26estimation methods essentially allow you
- 41:29to to estimate those things,
- 41:31to get a sense of
- 41:32how does the group, how
- 41:34does the group that I'm
- 41:35investigating is doing.
- 41:37And
- 41:38the
- 41:39these are all, again,
- 41:41implanted in toolbox. There are
- 41:42multiple, like, ways to do
- 41:44it.
- 41:45The way to get it
- 41:46done is to just take
- 41:47the optimization that you wrote
- 41:49now, the those,
- 41:50some of
- 41:51those codes and just stick
- 41:53it into this method. So
- 41:55or you already created the
- 41:56Python objects. You can stick
- 41:57it into these, like, hierarchical
- 41:58estimation methods,
- 41:59make it run, and then
- 42:01it just organizes all the
- 42:02data and things for you.
- 42:04And
- 42:05we also have, like, methods
- 42:07to check how well this,
- 42:08like, optimization worked. Those are,
- 42:10part of the documentations, and
- 42:12we have features to cover
- 42:13that.
- 42:15But the point here is
- 42:16that, again, this plug and
- 42:17play stuff that if you
- 42:18got to a certain point
- 42:20in your modeling work, like,
- 42:21you already have, like, the
- 42:22optimization done and you know
- 42:24how you want to estimate,
- 42:25like, subject of the parameters,
- 42:27you don't have to start
- 42:28all to write some,
- 42:31some new, like, thousand lines
- 42:32of code
- 42:34and try to figure out
- 42:35how to estimate these, like,
- 42:36group level priors or group
- 42:38level parameters.
- 42:39There are methods there, and
- 42:40you can just stick it
- 42:41in,
- 42:42what you wrote before and
- 42:43get on with your life.
- 42:46And you can do fancy
- 42:47graphs like this that I
- 42:48don't think I can explain,
- 42:50but they are very nice.
- 42:52And,
- 42:53it's been a while. But,
- 42:54essentially,
- 42:56the the tutorials cover how
- 42:58to make these graphs if
- 42:59you're interested in.
- 43:00If if you spend a
- 43:01bit of time, there are
- 43:02ways you can, like, investigate
- 43:04how well your, for example,
- 43:07and hierarchical modeling
- 43:09improves your model estimates, your
- 43:11parameter estimates on a group
- 43:12level and on an individual
- 43:13level.
- 43:14And the tutorials
- 43:15include ways,
- 43:17on how to compare it,
- 43:18how to investigate it. These
- 43:19fancy graphs are probably, like,
- 43:21coming from those tutorials.
- 43:25And, of course,
- 43:26I don't wanna spend too
- 43:27much time here because I
- 43:28am getting to the end.
- 43:30We have a bunch of,
- 43:31like,
- 43:32features that cover things that
- 43:34you need for, stuff like
- 43:35parameter recovery and model recovery,
- 43:37and we have tutorials that
- 43:39correspond to it. And that
- 43:40is an
- 43:41unprecedented
- 43:42like, that is way too
- 43:44much recovery there. Those correlations
- 43:46are way too good. If
- 43:47you are doing computation modeling,
- 43:48this is not how you
- 43:49encounter them at first. So
- 43:51I really hit the nail
- 43:52on the head here. It's
- 43:53like I'm I'm a bit
- 43:54proud.
- 43:55But, essentially, the we have
- 43:57ways to generate data from
- 43:59modules. We have way tutorials
- 44:01to help you get these
- 44:02things done.
- 44:04So in order to just
- 44:05wrap up, I'm gonna emphasize
- 44:06some things here is that
- 44:08as you can see, there
- 44:09is a lot of,
- 44:10entry points for the toolbox.
- 44:13So if you're a novice,
- 44:14you can go you can
- 44:15start very easily. If you're
- 44:17more experts,
- 44:18you can,
- 44:19you you can hack your
- 44:20way through things.
- 44:22Again, if you're interested in
- 44:23modeling,
- 44:24you can you don't have
- 44:25to worry about the
- 44:27optimization frameworks. You can spend
- 44:29more time on model building.
- 44:32And this, like, modularity
- 44:35reduces the number of, lines
- 44:37of codes that you have
- 44:38to write and because we
- 44:39take care, we we we
- 44:41take care of all the
- 44:42bits and bobs for you.
- 44:45It is supported by built
- 44:46in datasets and tutorials to
- 44:48lower the barrier to doing
- 44:49it right.
- 44:50Now the only one one
- 44:52main thing that I wanna
- 44:52mention before I wrap up
- 44:54before I end the presentation
- 44:55is
- 44:56that reproducible science needs reproducible
- 44:58code. So we have huge
- 45:00amount of test units that
- 45:01essentially
- 45:02are there to make sure
- 45:03that any changes to the
- 45:05toolbox or any contribution that
- 45:06other people make to those
- 45:07toolbox
- 45:08will not break your code,
- 45:10will not break your simulations
- 45:12and the parameter estimations that
- 45:14you've done one year ago.
- 45:15So
- 45:16there are some things that
- 45:18I listed there that we
- 45:19are doing.
- 45:20The point here is that
- 45:21this is something that we're
- 45:22actively developing and making sure
- 45:24that,
- 45:25like, kinda like,
- 45:28that using the toolbox is
- 45:29safe. It's not something that's
- 45:31going to break with the
- 45:32next release.
- 45:34Something that I had some
- 45:35good experience with with other
- 45:36tools.
- 45:37And this is really good
- 45:39for us because it tests
- 45:40the toolbox across different operating
- 45:42systems and different Python versions.
- 45:44So if you change your
- 45:45laptops, things will still run.
- 45:46And this is a huge
- 45:47payoff because it makes us
- 45:49very easy to to allow
- 45:52contributions from others because we've
- 45:54checked for these things. We
- 45:56can we want people to
- 45:57develop extensions
- 45:59so that we can make
- 46:00but we want to make
- 46:01sure that the toolbox remains
- 46:03reliable.
- 46:05And,
- 46:07yeah, I think I'm gonna
- 46:08skip that because I'm kinda
- 46:09close to the end now.
- 46:11But, yeah, there's a lot
- 46:12of planned direction. The one
- 46:14thing that I want to
- 46:14emphasize is that we are
- 46:16really working on making this
- 46:18transition from,
- 46:20experimental data to,
- 46:22to the toolbox easier for
- 46:24you. And it comes with
- 46:25this intent of making the
- 46:27ecosystem a bit larger to
- 46:29include, like, things like the
- 46:31brain explorer, which is like
- 46:32data collection, like platforms.
- 46:34So that is it. The
- 46:36QR code down there takes
- 46:37you to the GitHub page
- 46:38where you have instruction of
- 46:39how to install stuff and
- 46:41how to debug things. That's
- 46:43the place where I also
- 46:45ask you to report any
- 46:47kind of issues or bugs.
- 46:48And I know that people
- 46:49are kind of shy about
- 46:50putting it out there because
- 46:51they are afraid that it
- 46:52is just their laptop that's
- 46:53making the problem. We also
- 46:55wanna know if your laptop
- 46:56is the one making the
- 46:57problem because it's informative for
- 46:59us. So if you if
- 47:00you're a bit shy, then
- 47:01you can also send an
- 47:02email out there.
- 47:04And
- 47:05that is it. Thank you
- 47:06very much for your kind
- 47:08attention. The my website is
- 47:09on the left QR code.
- 47:10The preprint is on the
- 47:11orange one. And
- 47:13thank you
- 47:14all the people from my
- 47:16lab. I think only a
- 47:17few of them are here
- 47:18probably. So, yeah,
- 47:20that is all. Thank you
- 47:21very much.
- 47:22Great. Thank you. Okay.
- 47:27Amazing. Thank you so much,
- 47:28Leonard,
- 47:29for this really, yeah, great
- 47:32detailed walk through and explanation.
- 47:35Are there any questions?
- 47:38I think people should just
- 47:39unmute themselves. Yeah. Yeah. I
- 47:40have a I have a
- 47:41question.
- 47:43And this was a was
- 47:44a really great talk, and
- 47:45I think you've built an
- 47:46incredibly
- 47:47powerful
- 47:48platform.
- 47:51My question kinda comes to
- 47:52those
- 47:53who use
- 47:54who, like, use choice rules
- 47:55such as sequential sampling models.
- 47:57And so how flexible and
- 47:59how much you've thought about
- 48:00integrating
- 48:01those types of models into,
- 48:03your platform because, you know,
- 48:05they're notoriously hard to fit
- 48:06with conventional
- 48:08optimization tools, and they require
- 48:10kind of specialized approaches sometimes.
- 48:12So I just kinda wanted
- 48:13to get your thoughts on,
- 48:14like, how how you might
- 48:15integrate those types of models.
- 48:17Yeah.
- 48:18That is really great. Thank
- 48:19you very much for asking,
- 48:21asking that question. So two
- 48:22things there. First one is
- 48:24that
- 48:25you define your model how
- 48:27it works. If you're more
- 48:28advanced and,
- 48:29you can probably hack your
- 48:31way through the toolbox.
- 48:33But because it's modular, there's
- 48:34a lot of entry point.
- 48:35You can build the model
- 48:36yourself, and you can develop
- 48:38these sequential,
- 48:40sequential, like, sampling models and
- 48:42the model construction phase and
- 48:44then stop before the optimizer.
- 48:47And you and we have
- 48:48a feature
- 48:49that exports
- 48:51your the model that you
- 48:52just wrote
- 48:54so that it can be
- 48:55used by third parties, like
- 48:57other library optimizers because they
- 48:59might be better fitted to
- 49:00to your solution. So we're
- 49:02trying to play nice with
- 49:04other tools as well.
- 49:06And,
- 49:06you know, most of the
- 49:07models that
- 49:09are coming our ways, we
- 49:10we just, like, encounter them
- 49:11on the go. We we
- 49:13planned a lot for our
- 49:14own use cases, but, of
- 49:15course, they are limited because
- 49:16we are one lab. Right?
- 49:18So
- 49:19there are ways you can,
- 49:20like, build these sequential models.
- 49:22And
- 49:23whether it will work with
- 49:25the optimizers that we have,
- 49:27I'm not exactly sure about
- 49:28that. We have, like,
- 49:30something that
- 49:31might fit, like, Bayesian
- 49:33directed adaptive sampling. This is
- 49:35a lot of fancy words.
- 49:37But
- 49:39with in terms of the
- 49:40model construction
- 49:41or building your models up
- 49:43until the likelihood,
- 49:44it's it's very easy. So
- 49:45you can definitely do it
- 49:47there. In terms of the
- 49:48optimization, you can try it
- 49:49with our tools, or you
- 49:50can export it somewhere else
- 49:52as well. If if you're
- 49:54interested in, like, write trying
- 49:55to write one inside the
- 49:57toolbox,
- 49:58feel free to do so.
- 49:58I'm I'm happy to debug
- 50:00as well and and have
- 50:01to Yeah. Get it inside
- 50:02the toolbox because this is
- 50:03something that is kinda outside
- 50:05of what we're usually doing,
- 50:07but something that is very
- 50:08interesting in terms of the
- 50:09research. Right? So would be
- 50:11nice to cover something like
- 50:12that. Don't know. Does it,
- 50:13like, clear up how you
- 50:14can, like, get these things
- 50:16done?
- 50:17Yeah. So if I understand
- 50:18you correctly, you can you
- 50:19can build the model with
- 50:21with your toolbox. But perhaps
- 50:23if you need a different
- 50:24optimizer, you can call in
- 50:26the optimizer from other packages
- 50:28Yes. Exactly. Correctly.
- 50:30Yeah. Yeah. I mean, that's
- 50:31it's tough because,
- 50:35for, like, a DDM, for
- 50:36example, that's, like, kind of
- 50:37the test case I'm thinking
- 50:39of is the Mhmm. There
- 50:40are a lot of different
- 50:40approaches to try and fitting
- 50:41these models, but they're notoriously
- 50:43kinda tricky.
- 50:45And it's not clear to
- 50:46me that there's, like, a
- 50:47specific optimizer that's worked. It's
- 50:48like people have written specialized
- 50:50code for each package that
- 50:52allows it to be fit.
- 50:54Yeah.
- 50:55That's a good point because
- 50:56the the DDM has probably
- 50:58the most coverage in terms
- 50:59of toolboxes out there. Like,
- 51:01there
- 51:01that I can think of,
- 51:02like, eight just from the
- 51:03top of my head right
- 51:04now that does DDM and
- 51:06does inference.
- 51:07So this is something that
- 51:09that we are that is
- 51:10not in our focus probably
- 51:11because of that that this
- 51:12has so much coverage.
- 51:14I have So you're you're
- 51:15more looking at, the models
- 51:16that, like, kind of are
- 51:18have been neglected by the
- 51:19field.
- 51:20Well, and
- 51:21my intuition
- 51:23is that we're looking at
- 51:24anything
- 51:25that can make trial level
- 51:26predictions. We're interested in learning,
- 51:28decision makings, and,
- 51:31any model that kind of
- 51:32takes in, information trial by
- 51:34trial, and that's where most
- 51:36of our use cases are.
- 51:38Now I do I did
- 51:39have some student who wanted
- 51:41to make,
- 51:43reinforcement
- 51:44learning DDM combination there, which
- 51:46has been done before.
- 51:48I haven't heard from him
- 51:49for a while, so I
- 51:50assume it was beyond what
- 51:52he was, like, hoping,
- 51:53what the toolbox at the
- 51:55time could cover.
- 51:56But this is something that
- 51:57we can also, like, explore
- 51:58because people if people are
- 52:00interested, it can we can
- 52:01make it happen. You know?
- 52:03Okay. Yeah. Thank you.
- 52:08So I'm sorry. Do do
- 52:09I understand correctly that, the
- 52:11the idea of the model
- 52:12of your package is, somewhat
- 52:14similar,
- 52:15to our plus
- 52:17where you invite,
- 52:19free open contributors
- 52:20and offer
- 52:22support
- 52:23in terms of troubleshooting and
- 52:24integrating. Is it is it
- 52:26the model? Exactly. So the
- 52:28thing is that, this is
- 52:29open source,
- 52:30and this is free as
- 52:31in freedom in a sense
- 52:33that users do have a
- 52:34lot of control over how
- 52:35the toolbox works and what
- 52:37is what are the features
- 52:38that are implemented.
- 52:39We already had some compute
- 52:41contributions
- 52:41from, from external parties, and,
- 52:44you know, they made changes
- 52:45to a toolbox. That's why
- 52:46we have the test units
- 52:48so that people can freely
- 52:50make,
- 52:51suggestions and changes without breaking
- 52:53everything.
- 52:54And
- 52:55and I had a lot
- 52:56of good experience with, working
- 52:59with external contributions
- 53:01in other packages. I had
- 53:02some r packages, so I'm
- 53:04definitely trying to, like,
- 53:06transpose that philosophy
- 53:08into into this Python library.
- 53:11In terms of troubleshooting,
- 53:14yes.
- 53:15I'm currently, like, involved in
- 53:17all the troubleshooting attempts,
- 53:19but we do have platform
- 53:21on GitHub where people can
- 53:22actually,
- 53:24solve it within each other.
- 53:25We have,
- 53:27we have this, discussion platform
- 53:29where people can pose their
- 53:30problem, where they can look
- 53:31for solutions as well.
- 53:33And please do,
- 53:35go there and share things
- 53:36because I'm interested in the
- 53:37people's experience, but also want
- 53:39to generate some traffic so
- 53:40that if if you encountered
- 53:42an error or or encountered
- 53:44the problem, it's very likely
- 53:45someone else did as well.
- 53:51Related to that, so I
- 53:52know right now you're the
- 53:53main support when it comes
- 53:55to the toolbox.
- 53:56Is there any plan, especially
- 53:58what's it,
- 54:00as a hopeful scale
- 54:03to have a more, yes,
- 54:04dramatically, like, support system in
- 54:06place? Or will you see
- 54:08how it goes and then
- 54:09react to the demand?
- 54:12So there are two things
- 54:13for that. I think you're
- 54:14asking whether Tobias is going
- 54:16to hire more people.
- 54:18He probably will at some
- 54:19point.
- 54:20So
- 54:21that's, so my PI will
- 54:23probably, like, involve, like, more
- 54:24people in the project as
- 54:25well. Currently, it's just me.
- 54:28There are no immediate plans
- 54:30of extending that,
- 54:32that team.
- 54:35But,
- 54:36it raises an interesting questions
- 54:38about how reliable the toolbox
- 54:40maintenance is or whether if
- 54:42you're, like, two years from
- 54:43now, you reach out because
- 54:44you have an issue. Real,
- 54:45some don't fix it.
- 54:47Yeah. Now the,
- 54:49the oldest code that I
- 54:50contributed to the toolbox was
- 54:52in twenty
- 54:54sixteen.
- 54:55It was,
- 54:56a model called Sustain, which
- 54:57is a categorization model. It's
- 54:59a network model,
- 55:01that, implements a prototype
- 55:04theory of categorization.
- 55:06It's it's a lot of
- 55:06fancy words. Again, just remember
- 55:08the model I sustain.
- 55:12I got an email about
- 55:13it a year ago that
- 55:14they want
- 55:16to get something done and
- 55:17want, want to make it
- 55:19work for their own use
- 55:20case, and that led to
- 55:21me discovering a bug in
- 55:22the code and making a
- 55:24fix and updating it,
- 55:27and pushing the change to
- 55:29the r package. And, you
- 55:30know,
- 55:32it's,
- 55:33I can make the commitment
- 55:34that I will at least
- 55:35look at problems,
- 55:37years from now. Whether there
- 55:39will be a bigger support
- 55:41team support team, I can't
- 55:42answer that.
- 55:44That makes sense. Thank you.
- 55:46I love it. I love
- 55:47it. Really impressive.
- 55:50Oh, yeah. There's a lot
- 55:51of lot of sources of
- 55:52audio.
- 55:54Alright. Let me mute this.
- 55:55Can you still hear me?
- 55:57Yes. I hear you.
- 55:58Perfectly. Yeah. Very impressive work.
- 56:01I guess my question is
- 56:02related
- 56:03to Alyssa's, but I'm gonna
- 56:05take it to the next
- 56:05level, which is,
- 56:07you know, I have I
- 56:09have seen,
- 56:11these two boxes
- 56:13in different fields, right, being
- 56:15developed. Yeah. And some had
- 56:17really massive impact on the
- 56:18field,
- 56:20like SPM.
- 56:22Some are
- 56:23kind of you know, some
- 56:25just, like, gradually died off,
- 56:27but also there are some
- 56:28that are more used in,
- 56:29like, a very bespoke way.
- 56:31Right? It's mostly just shared
- 56:33with a few maybe collaborators.
- 56:36I guess
- 56:38I wonder I don't know
- 56:39if Tobias is here, but,
- 56:40you know, like, maybe you
- 56:41can speak on his behalf.
- 56:43What are you guys thinking
- 56:44in terms of,
- 56:46I guess, the type of,
- 56:48yeah, the type of toolbox
- 56:49you wanna you wanna make.
- 56:50Right?
- 56:51That are you are you
- 56:52envisioning something that's more like
- 56:54SPM? Because that would be
- 56:56very resource heavy
- 56:58and involves,
- 56:59like, basically,
- 57:00a yeah. Like, more than
- 57:01just you or or you
- 57:03two. Right? But, like, a
- 57:05team of people with actually
- 57:07sustainable funding also
- 57:09and, you know, host supporting
- 57:11also workshops and all these
- 57:12things. Right? So that that's
- 57:14one that then the other
- 57:15one would be maybe more
- 57:17like,
- 57:18EdgeGF,
- 57:19you know, that, Mhmm. And
- 57:20I think it's mostly used
- 57:22in a a selected group
- 57:24of labs,
- 57:25mostly through, like, individual collaborations.
- 57:30Like, what are you, yeah,
- 57:31what are you thinking about
- 57:32at this moment?
- 57:34That's a that's a very
- 57:35philosophical and reflective question. Thank
- 57:37you very much.
- 57:40It I mean, I can't
- 57:41predict the future. What we
- 57:42want to do here is
- 57:43to have some flexibility in
- 57:45the type of models that
- 57:46you can use without
- 57:47calling in thousands of libraries.
- 57:50Of course, the toolbox started
- 57:51out by focusing on what
- 57:53our lab needs, what are
- 57:54the needs here, and how
- 57:55we can make sure that
- 57:56people can do their modeling
- 57:58bit. And then it grew
- 58:00into a bigger thing. Right?
- 58:01Because now there are external
- 58:03collaborators, and there are people
- 58:04who apply the toolbox outside
- 58:06of the lab as well.
- 58:07And,
- 58:08well,
- 58:09the
- 58:10the big thing is that
- 58:12well, I think that
- 58:13the interesting thing is that,
- 58:16lot of times you get
- 58:18this argument that if it's
- 58:19open source, then it's maintained
- 58:21and used as long as
- 58:22one person cares.
- 58:23Now I find that a
- 58:24bit weak argument. So even
- 58:26if the toolbox doesn't reach,
- 58:28like, SPM
- 58:29height
- 58:30or the, like,
- 58:32size, it can still be
- 58:33used and maintained regardless.
- 58:36I don't
- 58:37I
- 58:38I'm more focused on making
- 58:40sure that, you know, the
- 58:41toolbox that we have and
- 58:42the one that we're developing,
- 58:44focuses on the right thing,
- 58:45which I think is the
- 58:47human computer interaction bit is
- 58:49that how people interact with
- 58:50these tools as opposed to,
- 58:51like, trying to make it
- 58:53into a big toolbox that
- 58:54will define the the field.
- 58:57I think the important bit
- 58:58is, you know, making sure
- 59:00that what we have works,
- 59:01and hopefully people will benefit
- 59:03from it.
- 59:04But yeah. I
- 59:05so maybe I just avoided
- 59:07your question totally. I'm not
- 59:10sure. But our focus is,
- 59:13is, of course, on making
- 59:14sure the toolbox works and
- 59:16it, and people can use
- 59:17the toolbox,
- 59:18and we see what happens
- 59:20later on. Yeah. No. No.
- 59:21No. That's a good answer.
- 59:22I I just wanna I
- 59:23feel like, you know, I
- 59:24just wanna sort of challenge
- 59:26you to start to think
- 59:27about these things because,
- 59:29you know, it's clearly a
- 59:30lot of effort that you
- 59:31personally have put in into
- 59:33this product. Right? And you
- 59:35want the fields the community
- 59:37to use it. And I,
- 59:38a hundred percent agree with
- 59:40all the issues you raised
- 59:41early in the opening
- 59:43because those are the things
- 59:44that, you know, that is
- 59:46blocking the field, right, in
- 59:48some in some aspects.
- 59:50So,
- 59:51I think we all collectively
- 59:53feel that if there's a
- 59:55very robust tool
- 59:57that people can use with
- 59:59also, you know, good,
- 01:00:01ECG use.
- 01:00:03And, again, I feel like
- 01:00:05with with some resources and
- 01:00:06funding, right, and, you know,
- 01:00:08how collectively look for those
- 01:00:09things
- 01:00:10as a community
- 01:00:12that can support you and
- 01:00:13the team maybe to work
- 01:00:15on this, that would be
- 01:00:16really beneficial for the field.
- 01:00:18Yeah. It would be cool.
- 01:00:19I mean, the thing sorry
- 01:00:20to interrupt.
- 01:00:21Finish finish finish what you
- 01:00:22were saying. No. No. No.
- 01:00:23I was just the other
- 01:00:24thing is something that Blair
- 01:00:25raised, which is I think
- 01:00:27the other struggle we have
- 01:00:28is, you know, for example,
- 01:00:29XGF. Right? It's a very
- 01:00:31particular type of model, right,
- 01:00:33which I think is limited.
- 01:00:34It's used in some degree.
- 01:00:36But, but this one is
- 01:00:37much more flexible in terms
- 01:00:39of the model that people
- 01:00:40can actually develop.
- 01:00:43So I think, like, thinking
- 01:00:44about,
- 01:00:45you know, DDM
- 01:00:46or even alternative models
- 01:00:49that
- 01:00:50would tackle another issue, which
- 01:00:51is the lack of diversity
- 01:00:52in our models right now.
- 01:00:55Yeah. The so my my
- 01:00:57take on it, if I
- 01:00:58may, is that mainly that,
- 01:00:59you know,
- 01:01:00in psychology
- 01:01:02or especially, it's like
- 01:01:04excuse me. Science software is
- 01:01:05a fairly new phenomena that
- 01:01:06you pay attention to. It's
- 01:01:08like, previously, you just wrote
- 01:01:09your code and hope it
- 01:01:10worked,
- 01:01:11and then that's what happened
- 01:01:13in the seventies, eighties, nineties,
- 01:01:15and so on. And I
- 01:01:16still looked up code that
- 01:01:18was written in the, in
- 01:01:19the eighties and then, you
- 01:01:21know, but I didn't manage
- 01:01:22to get it to run
- 01:01:23because, of course, it was
- 01:01:24written in the eighties.
- 01:01:27But the idea is that
- 01:01:29science software and our the
- 01:01:30attention that we pay,
- 01:01:32pay to it is is
- 01:01:34a fairly new thing. And
- 01:01:35the a lot of funding
- 01:01:36agencies were not aware of
- 01:01:38it before,
- 01:01:39and now it's becoming a
- 01:01:41bit more of a concern
- 01:01:42with the new technologies that
- 01:01:43are developed. And maybe it
- 01:01:45gets more attention, maybe it
- 01:01:46gets more funding as well.
- 01:01:47On the other side, I
- 01:01:49think
- 01:01:51that,
- 01:01:52you know,
- 01:01:55toolboxes
- 01:01:55are kinda
- 01:01:57well, no. Actually, I'm gonna
- 01:01:58stop there. This is that,
- 01:02:00the the point is the
- 01:02:01science software is gonna, like,
- 01:02:02get more attention, and, hopefully,
- 01:02:04we'll get more support as
- 01:02:05well because it's an important
- 01:02:06part of our workflow and
- 01:02:08all sorts of things depend
- 01:02:09on it. But, yeah, we'll
- 01:02:10we'll see what happens.
- 01:02:12Yeah. We wanna even look
- 01:02:14into BRAIN initiative
- 01:02:16brands. They have certain mechanisms
- 01:02:18that support toolbox development.
- 01:02:22So Yeah. But yeah. Anyway,
- 01:02:24I was just thinking because
- 01:02:25the the beginning of neuroimaging,
- 01:02:27you know, is very similar,
- 01:02:28and people wrote their own
- 01:02:29codes to analyze their own
- 01:02:30fMRI data.
- 01:02:32Yes. Yeah.
- 01:02:34I mean,
- 01:02:36to be honest, I I
- 01:02:37do view, like, previous toolboxes
- 01:02:39be becoming, like, very supported
- 01:02:41as kind of like an
- 01:02:42accident because there was no
- 01:02:43infrastructure for it, as you
- 01:02:44say. So SPM big SPM,
- 01:02:47filled a particular need, and
- 01:02:49it became, like, big because,
- 01:02:52people started to adopt it
- 01:02:53very well. And, you know,
- 01:02:54it's just, that's the that's
- 01:02:56the thing that you have
- 01:02:57to focus on. And, yeah,
- 01:02:58the rest will, like, hopefully
- 01:03:00come or not. Who knows?
- 01:03:04Hey. If there is no
- 01:03:05more questions, then thank you,
- 01:03:06Leonard, again. This is Thank
- 01:03:08you very much.