In this recent paper, Finite Volume guru Randall J. LeVeque addresses an issue that is near and dear to my heart: Computational Scientists must start thinking about the reproducibility of their results.
Scientific results obtained by experimentation are expected to be reproducible. This has long been demanded of published results in, for example, physics or chemistry. Yet, scientific computing, while often experimental, has been strangely exempt from this requirement. This ought to change.
In his paper, LeVeque formulates several demands to be placed on scientific codes:
-
Availability in source code form. Codes used to obtain results in published research must be available for other researchers to inspect. While LeVeque is not as clear about this point, I would like to emphasize that this availability should be of the same kind as that of the paper advertising results obtained by the code. In most cases, this means that the code should be downloadable from the same place as the paper. (There should not be access restrictions on the paper either, but that’s a different issue.)
-
No dependencies on for-pay software. For widest availability and reproducibility, it is preferable to not have scientific codes depend on commercial, for-pay software. That notably includes Matlab.
-
Readability. Codes should be written mostly to be read, not so much to be executed. We need to grow an understanding that code is a valid expression of the ideas that it contains. The more apparent these ideas are from the code, the better.
Given these constraints, he arrives at virtually the same toolset that I’ve been using for a while now, consisting of Python, numpy, matplotlib and VisIt.
I am hoping that this issue gets the attention it deserves. I’ll try to do my part.