Tedana App

Loading video...
Tedana App

Overview

A cross-platform desktop application built with Tauri, leveraging Rust for performance and React for the user interface, designed to provide an intuitive front-end for Tedana, which is a specialized tool for processing multi-echo functional MRI (fMRI) data used in neuroimaging research.

Challenge

Multi-echo fMRI is a newer technique for measuring brain activity. It works by taking multiple snapshots of the brain in quick succession, which helps scientists get a clearer picture of what’s really happening inside. This method can reduce noise and improve the quality of the data compared to older techniques. However, because it’s still relatively new, many researchers aren’t yet familiar with how to use it. Most existing software tools for analyzing brain data were built for older methods, so using multi-echo fMRI often requires extra work, custom code, or specialized programs. This makes it harder for researchers to take full advantage of the technology, and slows down its adoption in neuroscience research.

Solution

To address the challenges of working with multi-echo fMRI data, I developed a desktop application that provides a user-friendly interface for Tedana, a powerful but technically complex command-line tool for processing this type of data. Built using Tauri framework with a React frontend and Rust backend, the application bridges the gap between advanced fMRI processing capabilities and researchers or clinicians who may lack extensive technical experience with terminal commands or Python environments. The cross-platform tool guides users through processing steps, helps visualize results, and ultimately makes sophisticated multi-echo fMRI analysis more accessible to the broader scientific community by removing technical barriers that might otherwise exclude non-technical users from utilizing these advanced processing methods.

Key Takeaways

This project gave me hands-on experience with the complexities of a low-level language like Rust, particularly around memory management, concurrency, and system-level programming. I learned how to interface with the terminal to run subprocesses and handle command-line tools like Tedana, while also building a responsive UI that could stream and display real-time output from the operating system. Bridging the gap between backend execution and frontend presentation was a valuable challenge that deepened my understanding of both system programming and user experience design.

Tech Stack

Frontend

  • TailwindCSS/DaisyUI
  • React
  • TypeScript
  • Zustand

Backend

  • Rust
  • Tokio (asynchronous runtime)

Other

  • Tauri (Cross-platform Application Wrapper)