code: def write_ipynb_local_js(
      location=None, d3_src=None, ldavis_src=None, ldavis_css=None
  ):
      """
      Write the pyLDAvis and d3 javascript libraries to the given file location.
  
      This utility is used by the IPython notebook tools to enable easy use
      of pyLDAvis with no web connection.
  
      Parameters
      ----------
      location : string (optioal)
          the directory in which the d3 and pyLDAvis javascript libraries will be
          written. If not specified, the IPython nbextensions directory will be
          used. If IPython doesn't support nbextensions (< 2.0),
          the current working directory will be used.
      d3_src : string (optional)
          the source location of the d3 library. If not specified, the standard
          path in pyLDAvis.urls.D3_LOCAL will be used.
      ldavis_src : string (optional)
          the source location of the pyLDAvis library. If not specified, the
          standard path in pyLDAvis.urls.LDAVIS_LOCAL will be used.
  
      Returns
      -------
      d3_url, ldavis_url : string
          The URLs to be used for loading these js files.
      """
      nbextension = False
      if location is None:
          try:
              # Later IPython versions
              from notebook.nbextensions import install_nbextension
  
              nbextension = True
          except ImportError:
              try:
                  # Older IPython versions
                  from IPython.html import install_nbextension
  
                  nbextension = True
              except ImportError:
                  location = os.getcwd()
  
      if d3_src is None:
          d3_src = pyLDAvis.urls.D3_LOCAL
      if ldavis_src is None:
          ldavis_src = pyLDAvis.urls.LDAVIS_LOCAL
      if ldavis_css is None:
          ldavis_css = pyLDAvis.urls.LDAVIS_CSS_LOCAL
  
      d3js = os.path.basename(d3_src)
      ldavisjs = os.path.basename(ldavis_src)
      ldaviscss = os.path.basename(ldavis_css)
  
      if not os.path.exists(d3_src):
          raise ValueError("d3 src not found at '{0}'".format(d3_src))
      if not os.path.exists(ldavis_src):
          raise ValueError(
              "pyLDAvis src not found at '{0}'".format(ldavis_src)
          )
      if not os.path.exists(ldavis_css):
          raise ValueError(
              "pyLDAvis src not found at '{0}'".format(ldavis_css)
          )
  
      if nbextension:
          # IPython 2.0+.
          # This will not work if a url prefix is added
          prefix = "/nbextensions/"
  
          try:
              [
                  install_nbextension(ext)
                  for ext in [d3_src, ldavis_src, ldavis_css]
              ]
          except IOError:
              # files may be read only. We'll try deleting them and re-installing
              from IPython.utils.path import get_ipython_dir
  
              nbext = os.path.join(get_ipython_dir(), "nbextensions")
  
              for src in [d3_src, ldavis_src]:
                  dest = os.path.join(nbext, os.path.basename(src))
                  if os.path.exists(dest):
                      os.remove(dest)
              [
                  install_nbextension(ext)
                  for ext in [d3_src, ldavis_src, ldavis_css]
              ]
  
      else:
          # IPython < 2.0 or explicit path.
          # This won't work if users have changed the kernel directory.
          prefix = "/files/"
  
          d3_dest = os.path.join(location, d3js)
          ldavis_dest = os.path.join(location, ldavisjs)
          ldavis_css_dest = os.path.join(location, ldaviscss)
  
          for src, dest in [
              (d3_src, d3_dest),
              (ldavis_src, ldavis_dest),
              (ldavis_css, ldavis_css_dest),
          ]:
              try:
                  shutil.copyfile(src, dest)
              except IOError:
                  # file may be read only. We'll try deleting it first
                  if os.path.exists(dest):
                      os.remove(dest)
                  shutil.copyfile(src, dest)
  
      return prefix + d3js, prefix + ldavisjs, prefix + ldaviscss
  
file_path: pyLDAvis/pyLDAvis/utils.py
imports: import json
  import os
  import re
  import shutil
  import warnings
  import numpy
  import pyLDAvis.urls
label_desc: Use image node_id 3 for calling a global function with example usage: write_ipynb_local_js(location, d3_src, ldavis_src, ldavis_css) and returns: unknown,  unknown,  unknown