IEEE partnered in March with Code Ocean, a cloud-based computational reproducibility platform that enables researchers to upload, run, and publish code, all without having to install anything on their computer. Such code access reduces the entry barrier for users who wish to reanalyze and reproduce the research.
Author Ivan Selesnick [right], an IEEE Fellow, discusses how he leverages the tool to share the code he publishes in his articles. As a professor of electrical and computer engineering at the New York University Tandon School of Engineering, in New York City, Selesnick creates new functions frequently. He considers writing code a favorite pastime and says that giving other researchers the chance to reuse his work is simply what science is about.
“To me, there’s nothing more fun than creating a new mathematical function,” he says, adding that sometimes the allure of algorithms keeps him up at night.
Selesnick pursued a degree in engineering as a way to combine his loves of mathematics and programming. More than just thinking up new mathematical ideas, finding ways to implement them is what motivates him, he says.
“I like to have an example of showing the idea for some practical application,” he says. “The kind of problem I would work on is removing noise from a medical image or a medical signal, like an electrocardiogram or an EEG signal.”
One of Selesnick’s articles on machine fault diagnosis extended beyond its intended industry. It detailed a new type of wavelet transform—the tunable Q factor—and included software other researchers could use. “Now this technique is used a fair amount in mechanical engineering for developing algorithms for detecting faults in machinery,” Selesnick says. “It’s very helpful to provide the software in order to make an impact.”
He works primarily in Matlab, which he describes as “second nature” to use. Now he’s coding in Python as well. It’s a new language for him, but Python increases the availability of his work, because not everyone has Matlab.
“Having these programs is a proof of concept that an algorithm runs, and that it does what you want it to do,” he explains. “It allows other people to use your algorithms more readily.”
After nearly 30 years in the field, Selesnick is no stranger to code sharing and the benefits of reproducibility. When applying for grants, showing the reach of previous work, including code, helps.
Selesnick has been publishing with IEEE since he was a graduate student. Because IEEE is a major publisher in his field, he was excited to see there’s now a way to share his underlying code within IEEE Xplore articles. Providing code “was just a natural, self-evident thing to do,” he says.
There were few groups sharing code in his field in the past, due to a lack of places to do so.
“I try to make functions and commands in the code mirror the mathematical equations in the article,” he says. “It's just a matter of packaging it, documenting it, tidying it up, and organizing it.”
His students are required to show their algorithms, making code-sharing a natural fit in his field. He tells his students to keep their code simple and to include even simpler demos. Doing so allows readers to run quick examples to verify the code’s basic structure without delving into excessive detail.
The more scientists who follow suit and make their code easily accessible, the greater impact their research will have, he says.
Prasad is a graduate student at Northwestern University’s Medill School of Journalism who writes about science and other issues.
IEEE membership offers a wide range of benefits and opportunities for those who share a common interest in technology. If you are not already a member, consider joining IEEE and become part of this worldwide network of more than 400,000 students and working professionals.