Software

I've been associated with Open Source/Free software for several years.

In 1998, Arun Krishnaswamy and I informally started the Indian Linux Users Group Chennai chapter(ILUGC) I was coordinator of this LUG for four years. I met a lot of interesting people and learned a lot.

Learning Python

If you are interested in learning Python on your own you may be interested in checking out a complete self-learning course that the FOSSEE Python group has put together, see here: https://python.fossee.in/self_learningcourse/

Software packages

In my spare time I develop some free software. My contributing code to the Open Source community is a means to give back to a community that has given me so much wonderful software. Here are some free software packages that I am heavily involved with:

  • PySPH -- PySPH is an open source framework for Smoothed Particle Hydrodynamics (SPH) simulations. The framework allows users to write SPH simulations in pure Python and generates high-performance code that can be run in serial or parallel via MPI. This framework has been under development at IIT Bombay by my students and myself.

  • Mayavi is a powerful scientific data visualizer that is written in pure Python and uses VTK. It is part of the Enthought Tool Suite and is an Envisage plugin which makes it easy to embed into applications using the Enthought framework. An earlier version of Mayavi hosted at sourceforge was the basis for the current version. You might want to read an article on Mayavi and its history on the Python success stories page.

  • TVTK -- TVTK is an open source and Python friendly wrapper around the popular VTK visualization and graphics library. TVTK development has been graciously funded by Enthought.

  • compyle -- ComPyle allows users to execute a restricted subset of Python on a variety of HPC platforms (multi-core CPU and GPU).

  • automan -- is an open source, Python-based automation framework for numerical computing. It is designed to automate the drudge work of managing many numerical simulations.

  • PyZoltan -- this is an open source Python interface to Zoltan. We are also developing a pure Python variant of this to allow us to distribute computations between multiple computers and accelerators.

  • Online testing interface -- A django app that lets users take an online programming quiz. Works for Python, Bash, C/C++ and other languages. We use this while teaching programming to students at IIT Bombay and elsewhere. It is currently developed and maintained by the FOSSEE Python group.

  • ViXeN: View eXtract and aNnotate media -- ViXeN is a simple tool to facilitate easily viewing, adding, and annotating metadata associated with media.

  • Jigna: Jigna is a bridge between Traits and the HTML world to provide a UI toolkit for traits models that is based on the powerful technologies of HTML, CSS and Javascript.

  • ipyaml: Allows one to convert IPython notebooks to YAML and vice-versa, works seamlessly with IPython allowing one to edit notebooks from your favorite text editor.

  • tex2ipy: This package makes it easy to convert a LaTeX file typically using the beamer package into an IPython notebook with RISE.

  • yglpy is a pure Python wrapper for Ygl.

  • Ygl_script (Last updated: Mar. 7, 2008): This provides Python, Perl and Tcl bindings for the Ygl library along with a simple wrapper class that allows one to do a rubber-band zoom using the mouse. Ygl is a graphical toolkit that emulates the 2D routines of SGI's GL, on X11. Ygl_script was developed using SWIG (Simplified Interface and Wrapper Generator). Read the README for instructions on how to compile and use Ygl_script. You can use this to make other SWIG supported language bindings too.

    The packaging at this point is primitive -- you have to edit the Makefile to suit your setup and build it. However the package is extremely simple so you should not really have much difficulty with it. I have updated it to work under Debian Woody. It also comes bundled with a pretty powerful plotting module for Python called plot.py. Email me if you have problems.

  • LaTeX class for dissertations submitted to IIT-M -- This tarball provides a LaTeX class along with a simple template thesis and synopsis. These can be used to easily write a thesis (or synopsis) suitable for submission at IIT-Madras. The class provides options to format PhD, MS, M.Tech. and B.Tech. thesis. It also allows one to write a synopsis using the same class file. Also provided is a BIBTeX style file that formats all bibliography entries as per the IITM format.

Software development

I've also helped a little with the development of a few Open Source packages.

  • Enthought Tool Suite -- I've brought to the Enthought tool suite, TVTK and Mayavi. I've helped develop Jigna. I've also helped with testing, reporting and fixing bugs under Linux.

  • VTK -- The visualization toolkit is a popular, powerful 3D visualization, graphics and imaging library. I have been making small contributions to VTK for several years now.

  • SciPy -- The SciPy project aims to bring powerful scientific computing libraries to Python. In the past I've helped a little with the development of SciPy. Of late I am too busy with my other software packages to do much SciPy development. My performance python article seems somewhat popular though.

Miscellaneous Python code

Python is a remarkably cool scripting language. There is very little you can't do with Python. There is enough information about Python on the net, so I won't bore you with more details.

Here are some scripts I've written that might be of interest to the general public (note though that these are quite dated).

  • doxy2swig.py -- Converts Doxygen generated XML files into a file containing docstrings that can be used by SWIG-1.3.x. Note that you need to get SWIG version >= 1.3.23 or use Robin Dunn's docstring patch to be able to use the resulting output in SWIG.

  • dp.py -- This module is a trivial data file parser. It allows one to create commented text data files and be able to read them from Python. I find this remarkably useful to process text data produced from some of my other code. The implementation is pretty lousy but works.

  • trace.py -- Implements a function tracer class that can be used to print the call graph of any Python function. Can be very useful when debugging. A unit test for this is also available as test_trace.py.