.. PyTAPS
   Jim Porter, <jvporter -at- wisc.edu>
   Revision 1.3, June 13, 2011

Installation
============

PyTAPS requires the following to be installed on your system:

* Python 2.5+
* `NumPy <http://numpy.scipy.org/>`_ 1.3.0+
* At least one of...

  * `MOAB <http://trac.mcs.anl.gov/projects/ITAPS/wiki/MOAB>`_ (or other iMesh
    interface)
  * `CGM <http://trac.mcs.anl.gov/projects/ITAPS/wiki/CGM>`_ (or other iGeom
    interface)
  * `Lasso <http://trac.mcs.anl.gov/projects/ITAPS/wiki/Lasso>`_ (or other iRel
    interface)

Once you have the prerequisites, the easiest way to install PyTAPS is to use
`Pip <http://pypi.python.org/pypi/pip>`_ (0.7+ recommended)::

  pip install pytaps

This will download, compile, and install PyTAPS automatically. If you have some
but not all of the ITAPS interfaces (e.g. only iMesh), this will only install
interfaces for the libraries you have, as described in `Autodetection of
Libraries`_.

Building Manually
-----------------

Like many Python packages, PyTAPS uses Setuptools for installation, so in
general setup consists simply of downloading the tarball, extracting it, and
typing ``python setup.py install`` inside the extracted directory. However,
certain ITAPS interfaces may require some additional setup.

Autodetection of Libraries
__________________________

The PyTAPS setup script supports importing definitions from the
`iXxx-Defs.inc` files, where `iXxx` is the name of the interface. PyTAPS will
attempt to find these files automatically, by searching in some common
locations:

#. The files specified in the environment variables ``IXXX_DEFS``
#. For each directory `dir` in the environment variables ``PATH`` and
   ``CPATH``, look in `dir/../lib`
#. Each directory in the environment variable ``LD_LIBRARY_PATH``
#. `/usr/local/lib`
#. `/usr/lib`

If the PyTAPS setup script cannot find the `iXxx-Defs.inc` file, it will
assume you do not have that interface installed and automatically disable it in
PyTAPS.

If you have the `iXxx-Defs.inc` files installed but not in any of the above
locations, you can specify where they are in the global command-line options
``--iXxx-path=PATH``, like so::

  python setup.py --iMesh-path=PATH install

Usage
=====

The following example illustrates the basics of using iMesh. This script gets
all the faces of a mesh and prints out the coordinates of their vertices::

  from itaps import iBase, iMesh

  mesh = iMesh.Mesh()
  mesh.load("mesh.vtk")

  faces = mesh.getEntities()
  adj = mesh.getEntAdj(faces, iBase.Type.vertex)

  for i in adj:
      for j in i:
          x, y, z = mesh.getVtxCoords(j)
          print "%f, %f, %f" % (x, y, z)
      print

Testing
=======

Basic tests of the interfaces are located in test/. To run all the tests, run
``python setup.py test``. To run a subset of tests, use ``-S <suite_name>``,
e.g. ``python setup.py -S test.imesh``.
