Back to portfolio

Taming Your Datasets with MeDUSA

1 / 4

The project

Our client had existing R code that allowed them to analyse large datasets of single-cell metabolomics data obtained from laboratory experiments. However, this code was not optimised and was difficult to set up on personal devices because it was stored in a Docker container. Our goal was to help optimise this code, as well as make it easier to access and use for researchers without explicit R knowledge.

To achieve this, our main product is an R Shiny application that functions as a GUI, helping researchers navigate the data analysis functionality without needing to interact with R code. To make this functionality accessible, we also created an installation script that automatically downloads all required packages and removes the Docker dependency. Additionally, several backend functions were optimised, resulting in a significant increase in computation speed when applied to large datasets.

As a result, our work is expected to contribute to making the data analysis aspect of the research significantly faster and easier to use going forward.

The customer

Our client was the MeDUSA development team, part of Leiden University. This team consists of our main contact person Ahmed Ali and programmers Pascal Maas and Dirk Wevers.

We held weekly client meetings over Teams in which we shared our progress, as well as had the opportunity to ask questions and receive feedback. During a large part of the semester there also was a second weekly meeting dedicated to code technical discussion with our client. Overall, the communication was very positive and helpful; it allowed us to consistently stay in contact about the current progress and ask for advice and feedback when needed.

The team

Within our team we had the roles of Scrum master and Product Owner for the organisational part of the collaboration and task focused roles for the technical part. The scrum master was responsible for organising our biweekly sprint meetings. In these meetings a sprint review was conducted and tasks were divided for the upcoming sprint. The technical tasks refer to each member’s focus within the project, examples of this include: GUI focus, backend focus, installation focus and testing focus.

The division of work was handled in the scrum meetings and with the use of the GitHub project board, through WhatsApp contact and the weekly meetings, progress was monitored. The main challenge of working in a group of six is making sure everyone has tasks to work on and combining everyone’s work into a cohesive whole. Since everyone took responsibility and we had frequent contact, we managed to do this. A challenge specific to this project was making sure the GUI could also handle the large datasets required for this type of analysis. Through efficient data handling, caches and the isolate function, this obstacle was cleared as well.

However, in the end we are particularly happy with achieving an improved backend, alongside a GUI that makes navigating the backend functionality much more accessible.

The technologies

Backend:

  • R: Main language of the backend functionality
  • C++: Partially used to speed up functionality where useful, wrapped in R

Frontend:

  • R Shiny: Framework that enables the creation of an interactive web application

Installation:

  • Windows Batch Scripting: .bat file for Windows install and uninstall
  • Shell Scripting: .sh file for Linux/Mac equivalent

Tooling:

  • lintr: Static analysis and linting of the R code for style consistency and syntax issues
  • GitHub Actions: Automatically runs lintr checks on pull requests to main

Documentation:

  • R Markdown: Used to create guide documentation for future developers
  • Markdown: Used for the Readme and completed work overview documentation