Channels ▼


Mathematica 7: A Review

The other new feature set that greatly appeals to computational enthusiasts is the bevy of new parallel computing additions. Previously sold as a separate add-on, Mathematica 7 seamlessly integrates these multi-kernel functions to take full advantage of multi-core systems. By default, it supports 4 kernels (4 cores) out of the box. For those developers fortunate and wealthy enough to afford a dual quad-core (or more) system, an additional license configuration will need to be purchased from Wolfram to take advantage of the additional cores. One of the more frustrating things I encounter when using various tools on my quad-core workstation is the complete lack of awareness programs have of my computer's multi-core architecture, especially when those programs are computationally intensive. Wolfram recognized this rapidly expanding trend and took advantage of the extra horsepower via its new Parallelize, ParallelTry and ParallelEvaluate functions which provide automatic and concurrent expression evaluation. Parallel performance can be tweaked and queued using the ParallelMap, ParallelCombine, ParallelSubmit, WaitAll and WaitNext functions. These and many other parallel computing functions ensure that developers have tremendously granular control over what will be sent through the parallel pipeline and exactly how that data will be processed. Mathematica 7 is the first program I've used on my 64-bit Linux-driven quad-core rig that showcases the power a multi-core workstation can deliver. It's one of the first features I demonstrate for my technical peers and the response from them is always the same -- That's cool!

[Click image to view at full size]
Figure 4: Mathematica 7 takes full advantage of multi-core computing architectures.

New Features

Another slick addition in the previous Mathematica release was its Wolfram managed web service data look-ups, called "Curated Data". Calling these in-line functions poll Wolfram's servers have which compiled and formatted this lookup data from a variety of scientific and statistical resources. That version introduced such data sources as the AstronomicalData, ChemicalData, and FinancialData among other things which allowed users to poll datasets subscribed to and optimized by Wolfram for its Mathematica customers to consume. Now in version 7, these Curated Data sets have been expanded to include GenomeData and GenomeLookup for human gene sequence information, ProteinData for protein model structures and functions and even GeodesyData for geodetic coordinate systems data.

[Click image to view at full size]
Figure 5: DNA data from the human genome can now be directly called upon within Mathematica.

[Click image to view at full size]
Figure 6: Protein molecule models can also be called upon and further manipulatedwithin Mathematica.

Existing data collections for such functions as the AstronomicalData, DictionaryLookup, and WeatherData have been expanded with additional data properties, entities and objects. Combining these functions together make for some truly stunning, relatively real-time data visualization revelations that would have previously required days or weeks of programming to do what can now be done in Mathematica under a minute.

[Click image to view at full size]
Figure 7: Create an impressive mean temperature graphic in Mathematica using two linesof code.

While it does annoy me that Wolfram has locked down this web service to its own company servers, I can rationalize this decision to a certain degree assuming that Wolfram is scrubbing the data and keeping it as up-to-date as possible. I suspect Wolfram would also argue that by curating the data, they ensure the stability and reliability of the data being consumed from the Internet rather than dealing with SOAP soup that other web service-consuming applications have to contend with. Nevertheless, I still would prefer a SOAP and/or RESTful interface function to let me make that decision of data source consumption and accept whatever instability risks it might bring. For now, I will have to continue to curate my own data sources by scraping the web, populating a PostgreSQL database and using Mathematica's JDBC-compatible SQL database connectivity support (part of Mathematica's DatabaseLink toolkit) to pull the custom data into the application instead.

As Mathematica continues to expand beyond its single user interactive session roots into the realm of workflow automation, it has also added new functions to interact with messaging and the host operating system. The SendMail function adds email notification, great for being alerted when a complex, parallelized computation is completed or even something more sophisticated like being emailed a data-rich PDF complete with stunning 3D charts, manipulated images and beautifully rendered mathematical formulas to an internal company mailing list.

[Click image to view at full size]
Figure 8: The Internet Connectivity tab in the preferences dialog box can be used to set default mail server settings for the new SendMail function.

The new SystemOpen feature, similar to the existing Run function, provides a less verbose interface to easily open files or URLs from within a Mathematica notebook or operation. SystemOpen is accompanied by several other file determination and naming functions including AbsoluteFileName, FileExistsQ, FindFile, FileNameJoin and others. Combining the new parallel, image processing, email notification and external application execution commands can transform Mathematica into a serious data processing and messaging hub in a sophisticated workflow scenario. Combine this with Wolfram's gridMathematica and upcoming CloudMathematica add-ons for high-performance and distributed computing needs, Mathematica truly becomes a central controller for a mathematically intensive corporate application or research project.

I would be remiss if I didn't also mention that this new release sports hundreds of new mathematical algorithms and functions for mathematicians and educators. These include new discrete calculus algorithms, number theory functions (many of which I had never heard of before, like DirichletCharacter, MangoldtLambda and RiemannR), extended boolean computation, special functions like HurwitzLerchPhi and InverseHaversine, new Q-Functions like QhypergeometricPFQ, new utility functions like DiracComb and HeavisidePi and so much more. And perhaps the one enhancement that will further promote third-party and vertical market opportunities, Mathematica's Palette menu lets the Mathematica UI environment be enhanced and extended with custom palettes. One of the finest examples of this practice is action is the bundled Classroom Assistant, written by Eric Schulz, a mathematics professor at Walla Walla Community College. The Classroom Assistant palette makes the most frequently accessed calculations, commands and formatting ideal for presentation on an LCD projector or Smartboard. For more details, check out my audio interview with Eric at the recent 2008 International Mathematica User's Conference.

[Click image to view at full size]
Figure 9: The Classroom Assistant palette exposes popular presentation formatting and math functions.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.