code: def log_scale_with_negatives(in_vec: np.array) -> np.array:
      vec = in_vec.copy()
      pos_log = np.log(vec[vec > 0])
      neg_log = np.log(-vec[vec < 0])
      posnegmax = max(neg_log.max(), pos_log.max())
      posnegmin = min(neg_log.min(), pos_log.min())
      vec[in_vec < 0] = 0.499 * (
          (posnegmax - neg_log) / (posnegmax - posnegmin)
      )
      vec[in_vec == 0] = 0.5
      vec[in_vec > 0] = 0.501 + 0.499 * (
          1 - (posnegmax - pos_log) / (posnegmax - posnegmin)
      )
      return vec
  
imports: from typing import Callable
  import numpy
  import pandas
  from scipy.stats import rankdata
label_desc: Use image node_id 14 for calling a global function with example usage: log_scale_with_negatives(in_vec) and returns: vec