class_docstr: CLI describes a command line interface for interacting with igel, there
  are several different functions that can be performed.
class_docstr_tok: ["CLI","describes","a","command","line","interface","for","interacting","with","igel",",","there","are","several","different","functions","that","can","be","performed","."]
docstr: run a whole experiment: this is a pipeline that includes fit, evaluate and predict.
docstr_tok: ["run","a","whole","experiment",":","this","is","a","pipeline","that","includes","fit",",","evaluate","and","predict","."]
code: def experiment(self):
      """
      run a whole experiment: this is a pipeline that includes fit, evaluate and predict.
      """
      print(
          r"""
           _____                      _                      _
          | ____|_  ___ __   ___ _ __(_)_ __ ___   ___ _ __ | |_
          |  _| \ \/ / '_ \ / _ \ '__| | '_ ` _ \ / _ \ '_ \| __|
          | |___ >  <| |_) |  __/ |  | | | | | | |  __/ | | | |_
          |_____/_/\_\ .__/ \___|_|  |_|_| |_| |_|\___|_| |_|\__|
                     |_|
  
          """
      )
      d = dict(self.dict_args)
      d.pop("cmd")
      if not d:
          default_train_data_path = "./train_data.csv"
          default_eval_data_path = "./eval_data.csv"
          default_test_data_path = "./test_data.csv"
          default_yaml_path = "./igel.yaml"
          print(
              f""
              f"{'*' * 10} You entered interactive mode! {'*' * 10} \n"
              f"This is happening because you didn't enter all mandatory arguments in order to use the cli\n"
              f"Therefore, you will need to provide few information before proceeding.\n"
          )
          train_data_path = (
              input(
                  f"enter path to your data: [{default_train_data_path}]        "
              )
              or default_train_data_path
          )
          eval_data_path = (
              input(
                  f"enter path to your data: [{default_eval_data_path}]        "
              )
              or default_eval_data_path
          )
          test_data_path = (
              input(
                  f"enter path to your data: [{default_test_data_path}]        "
              )
              or default_test_data_path
          )
          yaml_path = (
              input(
                  f"enter path to your yaml file: [{default_yaml_path}]        "
              )
              or default_yaml_path
          )
  
          # prepare the dict arguments:
          train_args = {
              "cmd": "fit",
              "yaml_path": yaml_path,
              "data_path": train_data_path,
          }
          eval_args = {"cmd": "evaluate", "data_path": eval_data_path}
          pred_args = {"cmd": "predict", "data_path": test_data_path}
  
      else:
          data_paths = self.dict_args["data_paths"]
          yaml_path = self.dict_args["yaml_path"]
          (
              train_data_path,
              eval_data_path,
              pred_data_path,
          ) = data_paths.strip().split(" ")
          # print(f"{train_data_path} | {eval_data_path} | {test_data_path}")
          train_args = {
              "cmd": "fit",
              "yaml_path": yaml_path,
              "data_path": train_data_path,
          }
          eval_args = {"cmd": "evaluate", "data_path": eval_data_path}
          pred_args = {"cmd": "predict", "data_path": pred_data_path}
  
      Igel(**train_args)
      Igel(**eval_args)
      Igel(**pred_args)
  
imports: import argparse
  import logging
  import os
  import subprocess
  import sys
  from pathlib import Path
  import igel
  import pandas
  from igel import Igel, metrics_dict, models_dict
  from igel.constants import Constants
  from igel.servers import fastapi_server
label_desc: Use image node_id 16 for calling the CLI obj's underlying member method code with example usage: obj.experiment() without return types