Review: OmniGraphSketcher 1.0 Beta

OGS1

Earlier today, Omnigroup released its newest product, OmniGraphSketcher. OGS is a specialised app that makes it very easy to create publication-quality graphs and charts for presentations, reports and the like, and should be a boon for anyone who presents quantitative information on a regular basis. I can’t count the number of times that I have had to use a statistical software package (e.g. R) to generate simple schematic diagrams for use in presentations or papers. It always seemed like overkill, and involved a jarring psychological shift from the creative space of generating slides to the analytic space of statistical analysis. OmniGraphSketcher obviates the need for using complex technical software to generate high-quality 2D charts and graphs.

Read the rest of this entry »

March 26th, 2009, posted by chris

PyMC 2.0 Now Available

This week saw the release of PyMC 2.0, thanks mainly to the efforts of my co-developers, David and Anand. With their help, PyMC has been elevated to new levels of flexibility, robustness, and performance. For those unfamiliar, PyMC is a Python module for building and fitting Bayesian models, primarily using Markov chain Monte Carlo methods. It is approximately comparable to WinBUGS in terms of functionality, but is an extension to the Python programming language (and the NumPy/SciPy scientific programming modules) rather than a stand-alone software application. If you have not tried PyMC, or have not seen it since its 1.3 or earlier incarnations, I urge you to have a look.

At the core of the version 2.0 is a brand-new object model and syntax. This means that models coded for version 1.3 (or earlier) will not be supported, but the superior flexibility and performance of the new code base, you should find, is well worth the lack of backward compatibility. PyMC 2.0 optimises the computation of log-probability terms, with the help of an efficient caching scheme. In addition, the range of MCMC sampling algorithms has been expanded to include adaptive blocked Metropolis algorithms, as well as algorithms specialised for discrete or binary parameter types. The suite of available probability distributions has been expanded and optimised and there is now support for a range of database backends, including SQLite, MySQL, hdf5 and pickle. In all, too many improvements to expound in a single blog post.

On the performance front, based on some admittedly coarse hand-timed comparisons, PyMC matches WinBUGS in speed using a couple different models coded in each language (see the PyMC project page for the model code). The only circumstance so far that BUGS outperforms is when imputation of missing values is necessary, and even here, new improvements in the 2.1 code base has narrowed the gap significantly.

Along with the new release is an updated version of the user’s guide. This contains comprehensive install instructions, a quick hands-on tutorial, model building details, and information on extending PyMC.

So, give PyMC 2.0 a try and let us know what you think. Installers are available from the Python Package Index (PyPi) and the mailing list on Google Groups.

January 10th, 2009, posted by chris

PyMC 2 Release Candidate Available

PyMC2 Screen Shot

Its been a long time in the making, but the release of PyMC 2.0 is very near. Thanks mostly to the efforts of my co-developers Anand and David, PyMC 2.0 represents a major revision of the PyMC code base. The changes in version 2 are drastic, and as such, it is not backwards-compatible with models written for previous versions. The syntax is more flexible and models run a heck of a lot faster than the first generation of the module, so I strongly urge all users to make the switch.

We have just posted a second release candidate, which is available for the major platforms on the Python Package Index.

Additionally, the user guide has been completely re-written, combining details on syntax and model implementation with step-by-step tutorials. This, along with several real-world examples, can be downloaded from the PyMC Google Code site.

As we push toward the final release of PyMC, we welcome any questions, feedback or suggestions via the PyMC Google Group.

December 15th, 2008, posted by chris

Death to Automator! Long Live Shell Scripts!

I just wanted to quickly point out that I have abandoned the Automator installer for the Scipy Superpack, in favour of a simpler (and hopefully more reliable) shell script. Though it was nice having a slick point-and-click installer, I and others found it to be rather flaky. Sometimes it installed packages, other times it would not. At the end of the day, most of it was a shell script wrapped in Applescript anyway, so why bother.

If anyone has ideas regarding how to install heterogeneous packages efficiently that would seem to make more sense than a shell script, please do let me know.

You can try out the new installer on the Superpack page.

September 23rd, 2008, posted by chris

Enthought Python Distribution for Mac: First Impressions

Last week I reported that Enthought, and Austin, TX based scientific computing company, had released the first beta of their Python distribution for the Mac. Well, they are on to Beta 2 now, so I thought I would give my impressions of the “batteries-included” Python suite after having explored it for a few hours. The bottom line? For many scientists using OSX as their preferred computing platform, the Enthought Python Distribution (EPD) may represent the long-awaited replacement for Matlab, which has always been a bit clunky on the Mac (not to mention proprietary and expensive).

EPD in Finder

Read the rest of this entry »

July 24th, 2008, posted by chris

Enthought Python Distribution for OSX in Beta Testing

A recent post on the Enthought Blog announces the availability of the Enthought Python Distribution (EPD) for OSX. Previously only available on Windows and RedHat 3, the EPD is a “batteries-included” distribution of Python, geared toward scientific applications. This distro includes the following essentials:

  • Python - Core Python
  • NumPy - Multidimensional arrays and fast numerics for Python
  • SciPy - Scientific Library for Python
  • Enthought Tool Suite (ETS) - A suite of tools including: Traits - Manifest typing, validation, visualization, delegation, etc. Mayavi - 3D interactive data exploration environment. Chaco - Advanced 2D plotting toolkit for interactive 2D visualization. Kiva - 2D drawing library in the spirit of DisplayPDF. Enable - Object-based canvas for interacting with 2D components and widgets.
  • Matplotlib - 2D plotting library
  • wxPython - Cross-platform windowing and widget library.
  • Visualization Toolkit (VTK) - 3D visualization framework

These sorts of bundles are very attractive for scientists that would rather not invest the time in compiling each of these packages from scratch, particularly in the case of the visualisation packages, which can be rather fussy to build.

So, does this render my Scipy Superpack redundant? When I get back to NZ from my current road trip, I will give it a try, and provide a full review.

July 3rd, 2008, posted by chris

Getting Things Done with VoodooPad

This was a popular post on my last site, so I thought I would replicate it here at Macinscience. I’ve been a relatively recent adherent of David Allen’s Getting Things Done (GTD) productivity system. Implemented properly, I believe it can enhance nearly everyone’s ability to meet deadlines, achieve multiple disparate professional objectives and, well — simply get things done. My personal implementation of GTD has undergone several iterations over the months, which has included the serial adoption of multiple software tools to make the system go: Kinkless GTD, Backpack, Stikkit — you name it, I’ve tried it.

In the course of all this change, I fell into one of the notorious traps of GTD: I was spending more time optimizing my system for getting things done than I was actually doing the things I was supposed to be getting done. From what I’ve read, this is a more common problem than you might expect. So, it was time to simplify, to take the pieces of the system that are relevant to my productivity issues and run with them, leaving behind the finer points that have gotten me bogged down. All I really needed was a tool to aggregate all of the tasks, errands and actions from all my various projects, and aggregate them in one place, organized according to context. For this, I turned to VoodooPad.

VP window

VoodooPad is touted as a personal wiki, but is really much more. Its byline is “you put your brain in it”, which is really the essence of GTD — move things out of your head, where they are liable to get lost, and into a system, where they can be organized and acted upon. An important feature of VoodooPad is that it can be scripted, using any number of freely-available scripting languages on the Macintosh, including Lua, Python and AppleScript. Rather than gin something up from scratch (which I rarely do), I adapted an existing Lua script provided by Gus Mueller, the author of VoodooPad. This script searches the current document for lines tagged with contexts, then aggregates them on a single page:

VP GTD actions

The GTD script relies on having a page called Contexts somewhere in the document. This page contains all of the relevant contexts to provide the basis for organizing your actions across all projects. Your contexts should include all circumstances that are conducive for getting certain tasks done: sitting at a computer, in the car running errands, reading in your office, etc. These contexts are canonically prepended with @; though this is not necessary, it avoids confusion.

VP GTD contexts

Then the script looks for lines tagged with any of these contexts, but importantly, ignoring lines that are struck out (i.e. completed). Lines can be struck out and moved to the bottom of the page upon completion using the Strike Out and Move to Bottom of Page script in the Plugin menu, which I have linked to a shift-apple-D key combination.

Deleted items

Recently, I have added additional functionality to the script: (1) it now lists actions that are either overdue, due today or due tomorrow based on dated due keyword, (2) supports reminders based on dated remind keyword and (3) it creates a “Project” page that lists actions sorted by project. Based on some feedback from users on the VoodooPad forum, I also added the ability to compile actions tagged with today’s or tomorrow’s date (yyyy.mm.dd format), and place them at the top of the Actions page. To run the script, simply select it from the Scripts menu, or associate it with a hotkey (I use shift-cmd-a).

There you have it. Feel free to grab a copy of the script and give it a try (it belongs in ~/Library/Application Support/VoodooPad/Script Plugins). The full version of VoodooPad isn’t free, but is a very reasonable $30. Given that it has become my most important ogranizational tool, I think that’s a small price to pay.

May 20th, 2008, posted by chris

OmniGraffle + LaTeX = Victory!

OmniGraffle equation script

One of the very few shortcomings of OmniGroup’s peerless diagramming application, OmniGraffle is the lack of support for mathematical symbols and equations. You are essentially limited to the math symbols available in the character palette, or to importing equations generated by another application. I have created a simple Automator script that typesets LaTeX equations on the fly, using the LaTeX distribution installed on your system, and places the resulting graphic in OmniGraffle. To facilitate editing or re-generating the equation, the script also populates the notes field of the equation graphic with the original LeTeX code. The screencast below shows how its done.

Be sure to put the file in the OmniGraffle scripts folder (select the Open Scripts Folder menu item from the Scripts menu, then select the OmniGraffle Scripts Folder submenu item). The script should certainly work if you have MacTex installed, and should work with other flavours of LaTeX, so long as pdflatex is in either /usr/texbin or /usr/local/bin. The only other dependency is the Python Automator Action, as the script is heavily reliant on Python.

Download the OmniGraffle script

For fans of OmniOutliner, I’ve also created a version of the script just for you!

OO equation

Download the OmniOutliner script

Technorati Profile

April 24th, 2008, posted by chris

Installing Python .eggs With Automator

running the script

I’ve been on an Automator programming kick lately. This time, its a script to install selected .egg Python packages with EasyInstall from the Finder. You simply select the package you wish to install in the Finder, and run the EasyInstall Python Package workflow from the scripts menu (the installer requires administrator privileges, of course). Successfully installed packages are labelled green, while failed installations are flagged red.

As always, the script should be unzipped into the ~/Library/Scripts folder in order to appear in the scripts menu.

successful install

Download EasyInstall Python Package script

April 23rd, 2008, posted by chris