code: def _initiate_create_edges(
      verbose,
      v,
      ft_feature,
      connectors,
      selectors,
      r_dtype_dic,
      transfer_features,
      no_transfer_rs,
      hdf_key,
  ):
      # verboseprint
      verboseprint = print if verbose else lambda *a, **k: None
  
      # reset all class attributes, necessary for consecutive calls
      # of create_edges
      CreatorFunction.reset("all")
  
      # ====================================================================
      #  INITIALIZATION OF CLASSES
      # ====================================================================
  
      # for single connectors/selectors, create lists
      if not connectors:
          connectors = []
      elif not _is_array_like(connectors):
          connectors = [connectors]
      if not selectors:
          selectors = []
      elif not _is_array_like(selectors):
          selectors = [selectors]
  
      # fast track
      if ft_feature is not None:
          if _ft_connector not in connectors:
              # if clause necesarry for consecutive calls
              connectors.append(_ft_connector)
          if "ft_selector" in selectors:
              selectors = [
                  _ft_selector if s == "ft_selector" else s
                  for s in selectors
              ]
          else:
              selectors.insert(0, _ft_selector)
  
      # adjust dtype dict for relations
      if r_dtype_dic is None:
          r_dtype_dic = {}
  
      # initialize connectors
      for connector in connectors:
          Connector(connector)
  
      # initialize selectors
      for selector in selectors:
          Selector(selector)
  
      # flatten all attributes of CreatorFunction
      CreatorFunction.flatten_variables()
  
      # check for consistency of given functions
      CreatorFunction.assertions(v, r_dtype_dic)
  
      # ====================================================================
      #  EDGE COLUMNS AND DTYPES
      # ====================================================================
  
      # 1) dtype of node indices
      if isinstance(v, pd.HDFStore):
          assert hasattr(
              v.get_storer(hdf_key).group, "table"
          ), "{} must be in table(t) format, not fixed(f).".format(
              hdf_key
          )
          v = v.select(hdf_key, start=0, stop=0)
      ndic = {"s": v.index.dtype, "t": v.index.dtype}
  
      # 2) output rs of connectors and selectors
      rs = _flatten(
          CreatorFunction.c_output_rs + CreatorFunction.s_output_rs
      )
      rdic = {}
      for r in rs:
          try:
              rdic[r] = r_dtype_dic[r]
          except KeyError:
              rdic[r] = None
  
      # 3) transfer features
      tfdic = {}
      for tf in transfer_features:
          tfdic[tf + "_s"] = v[tf].dtype
          tfdic[tf + "_t"] = v[tf].dtype
  
      # put all together
      coldtypedic = _merge_dicts(ndic, rdic, tfdic)
  
      # get rid of no_transfer relations
      if no_transfer_rs:
          if not _is_array_like(no_transfer_rs):
              no_transfer_rs = [no_transfer_rs]
          for key in no_transfer_rs:
              if key in coldtypedic:
                  del coldtypedic[key]
  
      return coldtypedic, verboseprint
  
file_path: deepgraph/deepgraph/iterators_and_indexers.py
imports: from datetime import datetime
  from itertools import chain
  import numpy
  import pandas
  from deepgraph._triu_indices import _triu_indices, _union_of_indices, _reduce_triu_indices
  from deepgraph.connector_selector_implementations import _ft_connector, _ft_selector
  from deepgraph.connectors_and_selectors import CreatorFunction, Selector, Connector
  from deepgraph.utils import _flatten, _is_array_like, _merge_dicts
label_desc: Use image node_id 1 for calling a global function with example usage: _initiate_create_edges(verbose, v, ft_feature, connectors, selectors, r_dtype_dic, transfer_features, no_transfer_rs, hdf_key) and returns: coldtypedic,  verboseprint