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","."]
code: def gui(self, *args, **kwargs):
      igel_ui_path = Path(os.getcwd()) / "igel-ui"
      if not Path.exists(igel_ui_path):
          subprocess.check_call(
              ["git"]
              + ["clone", "https://github.com/nidhaloff/igel-ui.git"]
          )
          logger.info(f"igel UI cloned successfully")
  
      os.chdir(igel_ui_path)
      logger.info(f"switching to -> {igel_ui_path}")
      logger.info(f"current dir: {os.getcwd()}")
      logger.info(f"make sure you have nodejs installed!!")
  
      subprocess.Popen(["node", "npm", "install", "open"], shell=True)
      subprocess.Popen(
          ["node", "npm", "install electron", "open"], shell=True
      )
      logger.info("installing dependencies ...")
      logger.info(f"dependencies installed successfully")
      logger.info(f"node version:")
      subprocess.check_call("node -v", shell=True)
      logger.info(f"npm version:")
      subprocess.check_call("npm -v", shell=True)
      subprocess.check_call("npm i electron", shell=True)
      logger.info("running igel UI...")
      subprocess.check_call("npm start", shell=True)
  
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 6 for calling the CLI obj's underlying member method code with example usage: obj.gui() without return types