parameters: (base_map, next_map)
return_statement: return ax, a1 * a2, a1 * b2 + b1
docstring: Compose a base coord map with scale a1, shift b1 with a further coord map
      with scale a2, shift b2. The scales multiply and the further shift, b2,
      is scaled by base coord scale a1.
docstring_summary: Compose a base coord map with scale a1, shift b1 with a further coord map
      with scale a2, shift b2. The scales multiply and the further shift, b2,
      is scaled by base coord scale a1.
docstring_tokens: Compose a base coord map with scale a1 shift b1 with a further coord map with scale a2 shift b2 . The scales multiply and the further shift b2 is scaled by base coord scale a1 .
function: def compose(base_map, next_map):
      """
      Compose a base coord map with scale a1, shift b1 with a further coord map
      with scale a2, shift b2. The scales multiply and the further shift, b2,
      is scaled by base coord scale a1.
      """
      ax1, a1, b1 = base_map
      ax2, a2, b2 = next_map
      if ax1 is None:
          ax = ax2
      elif ax2 is None or ax1 == ax2:
          ax = ax1
      else:
          raise AxisMismatchException
      return ax, a1 * a2, a1 * b2 + b1
function_tokens: def compose ( base_map , next_map ) : ax1 , a1 , b1 = base_map ax2 , a2 , b2 = next_map if ax1 is None : ax = ax2 elif ax2 is None or ax1 == ax2 : ax = ax1 else : raise AxisMismatchException return ax , a1 * a2 , a1 * b2 + b1