In our lab, we try to make our research reproducible. This means that all the results from a paper can be reproduced with the code and data available online. A more detailed motivation why we believe this is important can be found here. We also give a detailed description of the procedure to follow when making your publication reproducible.
Our repository setup for reproducible publications is available online. It allows not only the addition of code and data to a publication, but also for readers to give feedback and evaluations! The code is open source, so feel free to try it out too.
We (Patrick Vandewalle, Jelena Kovacevic, and Martin Vetterli) have submitted a paper about reproducible research to Signal Processing Magazine: What, Why and How of Reproducible Research in Signal Processing.
Join us in a discussion about the use of reproducible research and how to make it work on our reproducible research forum!
We have organized a special session at ICASSP 2007 about reproducible research (co-organized with Mauro Barni and Fernando Perez-Gonzalez). We had great talks, an interested audience, and some good discussions!
After a colleague asked something about a paper you wrote, you spend a considerable amount of time finding back the right program files you used in that paper. Not to talk about the time to get back to the set of parameters used to produce that nice result.
Because this type of situations sounded all too familiar to many people of the lab, we are now trying to make our research reproducible. Most of the ideas about reproducible research come from Jon Claerbout and his research group at Stanford University. We believe reproducible can be helpful in many ways:
- It will help us in the first place, to reproduce figures in the revisions of a paper, to create earlier results again in a later stage of our research, etc.
- Other people who want to do research in the field can really start from the current state of the art, instead of spending months trying to figure out what was exactly done in a certain paper. It is much easier to take up someone else’s work if documented code is also available.
- It highly simplifies the task of comparing a new method to existing methods. Results can be compared more easily, and one is also sure that the implementation is the correct one.
This may all sound very trivial, and in discussions with colleagues, there was a general agreement that this is how research should be performed. However, in practice, only few examples are available today. Making articles reproducible indeed requires a certain investment in time. However, we think that it is worth the investment. The interest is hard to quantify, but from download statistics and Google rankings, we can see that it really pays off!
How to make a paper reproducible?
Of course, it all starts with a good description of the theory, algorithm, or experiments in the paper. A block diagram or a pseudo-code description can do miracles! Once this is done, make a web page containing the following information:
- Authors (with links to the authors’ websites)
- Full reference of your paper, with current publication status, and a PDF of your paper
- All the code to reproduce all the results, images and tables. Make sure all the code is well documented, and that there is a readme file explaining how to execute it
- All the data (images, measurements, etc) to reproduce all the results, images and tables. Add a readme file explaining what the data represent
- A list of configurations on which you tested your code (software version, platform)
- An e-mail address that people can use for comments and remarks (and to report bugs)
Depending on the field in which you work, it can also be interesting to add the following (optional) information to the web page:
- Images (add their captions, so that people know what Figure xx is about)
- References (with abstracts)
For every link to a file, add its size between brackets. This allows people to skip large downloads if they are on a slow connection.
For examples, see the list of reproducible papers above.