code: def _separate(eq, dep, others):
      """Separate expression into two parts based on dependencies of variables."""
  
      # FIRST PASS
      # Extract derivatives depending our separable variable...
      terms = set()
      for term in eq.args:
          if term.is_Mul:
              for i in term.args:
                  if i.is_Derivative and not i.has(*others):
                      terms.add(term)
                      continue
          elif term.is_Derivative and not term.has(*others):
              terms.add(term)
      # Find the factor that we need to divide by
      div = set()
      for term in terms:
          ext, sep = term.expand().as_independent(dep)
          # Failed?
          if sep.has(*others):
              return None
          div.add(ext)
      # FIXME: Find lcm() of all the divisors and divide with it, instead of
      # current hack :(
      # https://github.com/sympy/sympy/issues/4597
      if len(div) > 0:
          # double sum required or some tests will fail
          eq = Add(
              *[
                  simplify(Add(*[term / i for i in div]))
                  for term in eq.args
              ]
          )
      # SECOND PASS - separate the derivatives
      div = set()
      lhs = rhs = 0
      for term in eq.args:
          # Check, whether we have already term with independent variable...
          if not term.has(*others):
              lhs += term
              continue
          # ...otherwise, try to separate
          temp, sep = term.expand().as_independent(dep)
          # Failed?
          if sep.has(*others):
              return None
          # Extract the divisors
          div.add(sep)
          rhs -= term.expand()
      # Do the division
      fulldiv = reduce(operator.add, div)
      lhs = simplify(lhs / fulldiv).expand()
      rhs = simplify(rhs / fulldiv).expand()
      # ...and check whether we were successful :)
      if lhs.has(*others) or rhs.has(dep):
          return None
      return [lhs, rhs]
  
imports: from functools import reduce
  from itertools import combinations_with_replacement
  from sympy.simplify import simplify
  from sympy.core import Add, S
  from sympy.core.function import Function, expand, AppliedUndef, Subs
  from sympy.core.relational import Equality, Eq
  from sympy.core.symbol import Symbol, Wild, symbols
  from sympy.functions import exp
  from sympy.integrals.integrals import Integral, integrate
  from sympy.utilities.iterables import has_dups, is_sequence
  from sympy.utilities.misc import filldedent
  from sympy.solvers.deutils import _preprocess, ode_order, _desolve
  from sympy.solvers.solvers import solve
  from sympy.simplify.radsimp import collect
  import operator
label_desc: Use image node_id 13 for calling a global function with example usage: _separate(eq, dep, others) and returns: list, None, None, None