docs: def from_settings(cls, settings):
          """ Creates a :class:`~explauto.experiment.experiment.Experiment` object thanks to the given settings. """
          env_cls, env_configs, _ = environments[settings.environment]
          config = env_configs[settings.environment_config]
  
          if settings.context_mode is None:
              env = env_cls(**config)
          else:
              env = ContextEnvironment(env_cls, config, settings.context_mode)
  
          im_cls, im_configs = interest_models[settings.interest_model]
          sm_cls, sm_configs = sensorimotor_models[settings.sensorimotor_model]
  
          babbling = settings.babbling_mode
          if babbling not in ['goal', 'motor']:
              raise ValueError("babbling argument must be in ['goal', 'motor']")
  
          expl_dims = env.conf.m_dims if (babbling == 'motor') else env.conf.s_dims
          inf_dims = env.conf.s_dims if (babbling == 'motor') else env.conf.m_dims
  
          if settings.context_mode is None:
              agent = Agent.from_classes(im_cls, im_configs[settings.interest_model_config], expl_dims,
                            sm_cls, sm_configs[settings.sensorimotor_model_config], inf_dims,
                            env.conf.m_mins, env.conf.m_maxs, env.conf.s_mins, env.conf.s_maxs)
          else:
              agent = Agent.from_classes(im_cls, im_configs[settings.interest_model_config], expl_dims,
                            sm_cls, sm_configs[settings.sensorimotor_model_config], inf_dims,
                            env.conf.m_mins, env.conf.m_maxs, env.conf.s_mins, env.conf.s_maxs, context_mode=settings.context_mode)
  
          return cls(env, agent, settings.context_mode)