Skip to content

IPython extension for easy physical quantity input and calculations

Notifications You must be signed in to change notification settings

birkenfeld/ipython-physics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ipython-physics

This is an extension for IPython 0.11+ that at the moment mainly enables easy input of physical quantities (i.e. numbers with units). The implementation is adapted from Konrad Hinsen's "Scientific.Physics.PhysicalQuantities" module.

If the "uncertainties" module (http://github.com/newville/uncertainties/) is installed, you can also enter values with standard errors wherever you can enter quantities, see the examples below.

You can have a look at a short notebook tutorial put together by Hans Fangohr at http://www.southampton.ac.uk/~fangohr/blog/physical-quantities-numerical-value-with-units-in-python.html.

Quick installation advice:

Place physics.py in any directory on PYTHONPATH, or add its directory to sys.path in your IPython ipython_config.py file. Then you can load it either in the config file or on the command line as described here: http://ipython.org/ipython-doc/dev/config/extensions/index.html

Quick usage examples:

  In:  1 m // cm                        # convert between units
  Out: 100 cm                           # (syntax inspired by Mathematica)

  In:  (1 m)/(1 s)                      # sugar for inline quantity input
  Out: 1 m/s                            # in arbitrary expressions

  In:  Quantity('1 m')/Quantity('1 s')  # this is the desugared form
  Out: 1 m/s

  In:  // furlong/fortnight             # convert units in last result
  Out: 6012.8848 furlong/fortnight

  In:  alpha = 90 deg                   # more sugar for assignment: no
                                        # parentheses needed

  In:  sin(alpha)                       # angle units work with NumPy
  Out: 1.0                              # trigonometric functions

  In:  m = 80 +/- 5 kg                  # calculating with uncertainties
  In:  v = 130 +/- 10 m/s               # (needs the "uncertainties" module)
  In:  0.5 * m * v**2 // kJ
  Out: 676 +/- 112.25445 kJ

  In:  %tbl sqrt(?x**2 + ?y**2) // cm   # quickly tabulate a formula:
  x = 1 m                               # provide some values
  y = 2 m
  Out: 223.6068 cm                      # and get the result
  x = 3 m                               # ... this continues as long as you
  y = 4 m                               # enter new values
  Out: 500 cm

  In:  c0                               # important physical constants
  Out: 2.9979246e+08 m/s
  In:  setprec(4)                       # set the display precision
  In:  c0
  Out: 2.998e+08 m/s

The predefined constants are:

  pi
  e
  c0    -- vacuum speed of light
  mu0   -- magnetic constant
  eps0  -- electric constant
  Grav  -- Newton's constant
  hpl   -- Planck's constant
  hbar  -- Planck's constant / 2pi
  e0    -- elementary charge
  me    -- electron mass
  mp    -- proton mass
  mn    -- neutron mass
  NA    -- Avogadro's number
  kb    -- Boltzmann constant
  g0    -- Standard earth gravity
  R     -- Universal gas constant
  alpha -- fine structure constant
  Ry    -- Rydberg constant
  mu_n  -- Magnetic moment of the neutron
  gamma -- Gyromagnetic ratio of the neutron
  h0    -- dimensionless Hubble parameter

Please let me know if anything is missing.

About

IPython extension for easy physical quantity input and calculations

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages