code: def feature_union_concat(Xs, nsamples, weights):
      """Apply weights and concatenate outputs from a FeatureUnion"""
      if any(x is FIT_FAILURE for x in Xs):
          return FIT_FAILURE
      Xs = [
          X if w is None else X * w
          for X, w in zip(Xs, weights)
          if X is not None
      ]
      if not Xs:
          return np.zeros((nsamples, 0))
      if any(sparse.issparse(f) for f in Xs):
          return sparse.hstack(Xs).tocsr()
      return np.hstack(Xs)
  
imports: from __future__ import absolute_import, division, print_function
  import warnings
  from collections import defaultdict
  from threading import Lock
  from timeit import default_timer
  import numpy
  import packaging.version
  from dask.base import normalize_token
  from scipy import sparse
  from scipy.stats import rankdata
  from sklearn.exceptions import FitFailedWarning
  from sklearn.pipeline import FeatureUnion, Pipeline
  from sklearn.utils.validation import check_consistent_length
  from toolz import pluck
  from .._compat import Mapping
  from .utils import _index_param_value, _num_samples, _safe_indexing, copy_estimator
label_desc: Use image node_id 9 for calling a global function with example usage: feature_union_concat(Xs, nsamples, weights) and returns: np, FIT_FAILURE, np, sparse