from kamodo.kamodo import Kamodo

LaTeX support

Kamodo supports both python and LaTex-formatted expressions as input. For LaTeX, you must wrap your expression in $ $:

Kamodo(f = 'x**2 + y**2', g = '$2x^2 + 3y^2$')


Kamodo's variable names have to follow python's naming conventions - only numbers, letters, and underscores, which are too restrictive for mathematical symbols. Therefore, Kamodo uses sympy's conventions when generating LaTeX from variable names, which provide a means to write mathematical symbols in a way ammenable to python. More details of sympy's conventions may be found here. Kamodo also adds some additional features not covered by sympy.


Subscripts are encoded with single underscores. Superscripts are encoded with double underscores. Combinations are possible.

Kamodo('x_i = a', 'y__j = b', 'z_oxygen__2 = c')

Greek letters

Most greek letters are supported using their corresponding english name. Use capitalization if the greek letter should also be capitalized.

Kamodo(rho = 'ALPHA+BETA+Gamma')


Some greek letters (e.g. pi, zeta) may conflict with Sympy's namespace. In that case, use all caps (e.g. PI, ZETA)

plus/minus operators

In Python we cannot have variables embedded with + or -, but we may still need these symbols to represent, say ionization or simulation time step. The table below shows how we map from (part of) a variable name to its corresponding latex output.

variable to latex
plus +
minus -
comma ,
LEFT \\left (
RIGHT \\right )
prime '

Here is how you would use these in your functions:

Kamodo(x_iplus1 = 'x_i*.9', O__minus = 'e**-h', OLEFT3PRIGHT = 't', fprime = 'x')

Variable reuse

Variables may only have one function representing their evaluation. If you try to define a variable twice, the second version will override the first. However, if you want to represent that variable in a different context but keep using its name, there are two options:

  1. Annotation - add superscripts/subscripts to distinguish between the different implentations.
  2. Mimicry - use a new name that produces the same LaTeX output.
Kamodo(rho = 'x + y + z', RHO = 'r*sin(theta)*cos(phi)', rho_2D = 'x + y')


Mimicry can cause confusion if the signature of the left-hand-side does not change, as in the example below:

Kamodo(rho = 'x + y', RHO = '3*x + y')