The LSA Technology Services’ Research Software Programming service provides the college with an in-house group of software developers dedicated to making custom programming capabilities available to researchers across the humanities, natural sciences, and social sciences.
When a research project has needs that can’t be met by existing software or services, this team gives researchers an alternative to the traditional options of learning to program on their own or hiring a graduate student who may not be around to support the application in a year or two. Working with LSA Technology Services saves researchers time and effort while also providing a professional level of code development and maintenance practices.
The LSA programming team members partner closely with researchers to understand their needs to create viable technology solutions. In a research environment, this often involves working through multiple iterations of a project, trying out a variety of solutions to find the one that best fits the researcher’s needs, and rapidly adapting the software as new findings arise or needs change.
One example of this iterative work involved developing a mobile app to track the circadian rhythms of study participants through data collection on activity tracking devices. The programming team developed an iPhone app to collect heart rate and step data, and get an analysis of this data back from the research lab. As the project expanded and additional participants were recruited, the team created an Android version of the app, incorporated additional data collection options, and expanded analysis functions.
In addition to mobile apps, the programming team has developed a variety of projects involving database setup and interactions in several different environments. For example, the team worked with a Department of Physics lab on tracking the construction process of thousands of identical robots to be used in the Dark Energy Spectroscopic Instrument. Each robot consisted of many parts, all of which had to be installed in a specific order and by a strict process. The programming team developed a database to track robots, their component parts, and the build progress, as well as an iPad app to allow the technicians building the robots to easily enter the parts and progress as they worked on the construction. Based on feedback found during use, the LSA Technology Services’ programmers quickly updated the app by adding functions to show how to perform each construction step, view previous builds, enter parts using a barcode scanner, and check overall progress.
The team has also helped customize the functionality of existing platforms, tailoring their behavior to fit researcher needs. A professor from the Department of Linguistics created a domain-specific language (DSL) interpreter to use as a teaching tool for an upcoming graduate class so his students did not to have to learn how to compile and run the DSL interpreter on their own machines. He approached the service looking for a no-install solution that his students could use to work with the interpreter and would allow him to distribute lecture notes and assignments easily.
The team eventually settled on standing up a customized instance of JupyterHub, a multi-user Jupyter Notebook environment that the professor and his students could use by logging on via a web portal. The team developed a set of extensions for the default notebook interface and Python language kernel that enabled users to seamlessly call the DSL interpreter from within notebooks and preprocessed the interpreter response to enhance the output’s visual display.
Using JupyterHub also allowed the professor to eventually develop a Python version of the DSL interpreter as a drop-in replacement for the plugin that called out to the previous version’s compiled executable.
Certain types of requests come up repeatedly in our work, and we’ve developed tools to help streamline the development process for these projects. Psychology labs frequently conduct experiments where human participants interact with a game or task on a computer, and these tasks need to precisely time the occurrence of displays and participant responses, usually in the form of keyboard or mouse presses. The programming team uses MATLAB with Psychtoolbox to handle the display and timing of these tasks and has developed a custom MATLAB Toolbox and task framework to handle the portions of the programming that are repeated for all tasks. As a result, when a lab comes to the group with a request for a new task, the programmer can focus solely on implementing the behavior specific to this task and doesn’t need to spend time recreating functionality to configure the experiment, get user input, set up Psychtoolbox, or record results in a structured manner.
The programmers don’t work solely with software; they are also experienced with integrating hardware and software systems in a lab environment. For example, a researcher wanted to surround a mouse with a four-walled display of synchronized striped patterns for behavioral experiments and sync the history of these displays with a neural and video recording system.
The programming team developed a MATLAB program to display the desired patterns on a set of four computer monitors arranged as a box, controlled by a fifth monitor, with additional signals wired from the computer to the recording system to track the timing and types of patterns displayed. This allowed the researcher to perform the novel experiment.
This is just a small sampling of projects LSA Technology Services’ Research Software Programming team has worked on. More details on some of their past projects can be found on their portfolio site. The team is always willing to learn something new, so if you or someone you’re working with would like to explore the possibilities of a custom software project, contact the team at LSATechnologyServices@umich.edu.
Michael Egan and David Wolfe, LSA Technology Services, contributed to this article.