Skip to content

Platform for managing biological research data.

Notifications You must be signed in to change notification settings

cellrex/cellrex

Repository files navigation

CellRex

Streamlit App FastAPI Ruff

Welcome to CellRex, a user-friendly full stack application built with Python and Streamlit. This application allows you to upload, download, and manage your research data with ease. CellRex is a platform that establishes a link between biological metadata and experimentally generated files.

Features

CellRex is built as a multipage app with three main pages:

  1. Upload: This page allows you to upload data files by dragging and dropping them into a dedicated upload folder on your filesystem or your NAS and filling out a form with relevant information. The template and check features streamline the upload process, ensuring consistency and accuracy in the information provided.
CellRex_Upload_short.mp4
  1. Search: This page provides a search mask that you can use to specify search criteria and easily find data files.
CellRex_Search_short.mp4
  1. Dashboard: This page provides insights about your data and helps you manage and organize your data efficiently.

Getting Started

Follow these steps to get started with CellRex:

  1. Create an .env-File with the following variables that will be used for docker-compose:
LOCAL_PATH_DATA = Path to your local or network storage where the data folder should reside
LOCAL_PATH_UPLOAD = Path to your local or network storage where the upload folder should reside
LOCAL_PATH_CONFIG = Path to your local or network storage where the labdata.yml should reside
LOCAL_PATH_PROTOCOLS = Path to your local or network storage where the protocols should reside
LOCAL_PATH_SQLITE = Path to the folder where the .sqlite-File will reside (must not be stored on a distributed file system)
  1. Build and start the container via docker-compose
docker compose up
  1. Open your web browser to access the app.
Local URL:      http://localhost:8501
Network URL:    http://ip.of.your.server:8501
  1. Navigate to the Upload page and follow the instructions to upload your data.

  2. Switch to the Search page and specify search criteria in the search mask to find data files.

  3. Download the relevant data files from the search results.

  4. Use the Dashboard page to manage and organize your data.

Architecture

The architecture of CellRex is divided into two main parts: the frontend and the backend.

Frontend

The frontend of CellRex is built with Streamlit. The frontend provides a user-friendly interface for uploading, searching, and managing data files. It communicates with the backend through a RESTful API, sending requests and receiving responses in the form of JSON data.

Backend

The backend of CellRex is built with FastAPI. It is responsible for managing the data files and metadata.

The data files are stored in a hierarchical folder structure, with each data file accompanied by a corresponding metadata JSON file. This structure allows for efficient organization and retrieval of data files.

The metadata for each data file is also stored in a SQLite database, which provides a robust and efficient method for querying and retrieving metadata.

Docker

Both the frontend and backend are containerized using Docker, which ensures that the application runs in a consistent environment. Docker Compose is used to manage the application services, making it easy to start and stop the application with a single command.

Contributing

We welcome contributions to CellRex! Here's how you can set up the development environment:

  1. Clone the repository:
git clone https://github.com/cellrex/cellrex.git
cd cellrex
  1. Install the development requirements:
pip install -r requirements-dev.txt
  1. Set up the pre-commit hooks:
pre-commit install

Now you're ready to start contributing! Please make sure to run the tests before you commit your changes:

pytest

If the tests pass, you can commit your changes and create a pull request.

Thank you for your contribution!

License

Copyright 2024 CellRex. All rights reserved.