code: def euler_from_matrix(matrix, axes="sxyz"):
      """Return Euler angles from rotation matrix for specified axis sequence.
  
      axes : One of 24 axis sequences as string or encoded tuple
  
      Note that many Euler angle triplets can describe one matrix.
  
      >>> R0 = euler_matrix(1, 2, 3, 'syxz')
      >>> al, be, ga = euler_from_matrix(R0, 'syxz')
      >>> R1 = euler_matrix(al, be, ga, 'syxz')
      >>> numpy.allclose(R0, R1)
      True
      >>> angles = (4*math.pi) * (numpy.random.random(3) - 0.5)
      >>> for axes in _AXES2TUPLE.keys():
      ...    R0 = euler_matrix(axes=axes, *angles)
      ...    R1 = euler_matrix(axes=axes, *euler_from_matrix(R0, axes))
      ...    if not numpy.allclose(R0, R1): print(axes, "failed")
  
      """
      try:
          firstaxis, parity, repetition, frame = _AXES2TUPLE[
              axes.lower()
          ]
      except (AttributeError, KeyError):
          _TUPLE2AXES[axes]  # noqa: validation
          firstaxis, parity, repetition, frame = axes
  
      i = firstaxis
      j = _NEXT_AXIS[i + parity]
      k = _NEXT_AXIS[i - parity + 1]
  
      M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:3, :3]
      if repetition:
          sy = math.sqrt(M[i, j] * M[i, j] + M[i, k] * M[i, k])
          if sy > _EPS:
              ax = math.atan2(M[i, j], M[i, k])
              ay = math.atan2(sy, M[i, i])
              az = math.atan2(M[j, i], -M[k, i])
          else:
              ax = math.atan2(-M[j, k], M[j, j])
              ay = math.atan2(sy, M[i, i])
              az = 0.0
      else:
          cy = math.sqrt(M[i, i] * M[i, i] + M[j, i] * M[j, i])
          if cy > _EPS:
              ax = math.atan2(M[k, j], M[k, k])
              ay = math.atan2(-M[k, i], cy)
              az = math.atan2(M[j, i], M[i, i])
          else:
              ax = math.atan2(-M[j, k], M[j, j])
              ay = math.atan2(-M[k, i], cy)
              az = 0.0
  
      if parity:
          ax, ay, az = -ax, -ay, -az
      if frame:
          ax, az = az, ax
      return ax, ay, az
  
imports: import math
  import numpy
label_desc: Use image node_id 21 for calling a global function with example usage: euler_from_matrix(matrix, axes) and returns: ax,  ay,  az