code: def AutoViz_Holo(
      filename,
      sep=",",
      depVar="",
      dfte=None,
      header=0,
      verbose=0,
      lowess=False,
      chart_format="svg",
      max_rows_analyzed=150000,
      max_cols_analyzed=30,
      save_plot_dir=None,
  ):
      """
      ##############################################################################
      ##### AUTOVIZ_HOLO PERFORMS AUTO VISUALIZATION OF ANY DATA SET USING BOKEH. ##
      #####    Give it any input file (CSV, txt or json) and AV will visualize it.##
      ##### INPUTS:                                                            #####
      #####    A FILE NAME OR A DATA FRAME AS INPUT.                           #####
      ##### AutoViz will visualize any sized file using a statistically valid sample.
      #####  - max_rows_analyzed = 150000 ### this limits the max number of rows ###
      #####           that is used to display charts                             ###
      #####  - max_cols_analyzed = 30  ### This limits the number of continuous  ###
      #####           vars that can be analyzed                                 ####
      #####  - COMMA is assumed as default separator in file. But u can change it.##
      #####  - Assumes first row as header in file but you can change it.      #####
      #####  - First instantiate an AutoViz class to  hold output of charts, plots.#
      #####  - Then call the Autoviz program with inputs as defined below.       ###
      ##############################################################################
      ####  If chart_format='bokeh': Bokeh charts are plotted on Jupyter Notebooks##
      ####  This is the default for AutoViz_Holo.                              #####
      ####  If chart_format='server', dashboards will pop up for each kind of    ###
      ####  chart on your browser.                                             #####
      ####  In both cases, all charts are interactive and you can play with them####
      ####  In the next version, I will let you save them in HTML.             #####
      ##############################################################################
      """
      ####################################################################################
      corr_limit = 0.7  ### This is needed to remove variables correlated above this limit
      ######### create a directory to save all plots generated by autoviz ############
      ############    THis is where you save the figures in a target directory #######
      target_dir = "AutoViz"
      if not depVar is None:
          if depVar != "":
              target_dir = copy.deepcopy(depVar)
      if save_plot_dir is None:
          mk_dir = os.path.join(".", "AutoViz_Plots")
      else:
          mk_dir = copy.deepcopy(save_plot_dir)
      if chart_format == "html" and not os.path.isdir(mk_dir):
          os.mkdir(mk_dir)
      mk_dir = os.path.join(mk_dir, target_dir)
      if chart_format == "html" and not os.path.isdir(mk_dir):
          os.mkdir(mk_dir)
      ############   Start the clock here and classify variables in data set first ########
      start_time = time.time()
      try:
          (
              dfin,
              dep,
              IDcols,
              bool_vars,
              cats,
              nums,
              discrete_string_vars,
              date_vars,
              classes,
              problem_type,
              selected_cols,
          ) = classify_print_vars(
              filename,
              sep,
              max_rows_analyzed,
              max_cols_analyzed,
              depVar,
              dfte,
              header,
              verbose,
          )
      except:
          print(
              "Not able to read or load file. Please check your inputs and try again..."
          )
          return None
      #################   This is where the differentiated HoloViews code begins ####
      ls_objects = []
      imgdata_list = list()
      height_size = 400
      width_size = 500
  
      ##########    Now start drawing the Bokeh Plots ###############################
      if len(nums) > 0:
          if problem_type == "Clustering":
              #### There is no need to do a scatter plot with a dep variable when no dependent variable is given
              print(
                  "No scatter plots with depVar when no depVar is given."
              )
          else:
              drawobj1 = draw_scatters_hv(
                  dfin,
                  nums,
                  chart_format,
                  problem_type,
                  dep,
                  classes,
                  lowess,
                  mk_dir,
                  verbose,
              )
              ls_objects.append(drawobj1)
          ### You can draw pair scatters only if there are 2 or more numeric variables ####
          if len(nums) >= 2:
              drawobj2 = draw_pair_scatters_hv(
                  dfin,
                  nums,
                  problem_type,
                  chart_format,
                  dep,
                  classes,
                  lowess,
                  mk_dir,
                  verbose,
              )
              ls_objects.append(drawobj2)
      drawobj3 = draw_distplot_hv(
          dfin,
          cats,
          nums,
          chart_format,
          problem_type,
          dep,
          classes,
          mk_dir,
          verbose,
      )
      ls_objects.append(drawobj3)
      ### kdeplot is the only time you send in ls_objects since it has to be returned with 2 objects ###
      try:
          drawobj4 = draw_kdeplot_hv(
              dfin,
              cats,
              nums,
              chart_format,
              problem_type,
              dep,
              ls_objects,
              mk_dir,
              verbose,
          )
          if not drawobj4:
              ### if it is not blank, then treat it as ls_objects ###
              ls_objects = copy.deepcopy(drawobj4)
      except:
          ### This KDE plot errors a lot due to DynamicMaps of holoviews being buggy, so better to skip it!
          print(
              "KDE plot is erroring due to problems with DynamicMaps. Hence it is skipped"
          )
      if len(nums) > 0:
          drawobj5 = draw_violinplot_hv(
              dfin,
              dep,
              nums,
              chart_format,
              problem_type,
              mk_dir,
              verbose,
          )
          ls_objects.append(drawobj5)
      if len(nums) > 0:
          drawobj6 = draw_heatmap_hv(
              dfin,
              nums,
              chart_format,
              date_vars,
              dep,
              problem_type,
              classes,
              mk_dir,
              verbose,
          )
          ls_objects.append(drawobj6)
      if len(date_vars) > 0:
          drawobj7 = draw_date_vars_hv(
              dfin,
              dep,
              date_vars,
              nums,
              chart_format,
              problem_type,
              mk_dir,
              verbose,
          )
          ls_objects.append(drawobj7)
      if len(nums) > 0 and len(cats) > 0:
          drawobj8 = draw_cat_vars_hv(
              dfin,
              dep,
              nums,
              cats,
              chart_format,
              problem_type,
              mk_dir,
              verbose,
          )
      print(
          "Time to run AutoViz (in seconds) = %0.0f"
          % (time.time() - start_time)
      )
      return dfin
  
imports: import numpy
  import pandas
  from autoviz.AutoViz_Utils import *
  import copy
  import warnings
  import logging
  import warnings
  from sklearn.exceptions import DataConversionWarning
  import matplotlib
  import matplotlib.pyplot
  import io
  import seaborn
  import re
  import pdb
  import pprint
  import matplotlib
  from itertools import cycle, combinations
  from collections import defaultdict
  import copy
  import time
  import sys
  import random
  import xlrd
  import statsmodels
  from io import BytesIO
  import base64
  from functools import reduce
  import traceback
  import xgboost
  from xgboost.sklearn import XGBClassifier
  from xgboost.sklearn import XGBRegressor
  import os
  from .classify_method import classify_columns
label_desc: Use image node_id 9 for calling a global function with example usage: AutoViz_Holo(filename, sep, depVar, dfte, header, verbose, lowess, chart_format, max_rows_analyzed, max_cols_analyzed, save_plot_dir) and returns: dfin, None