Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
*.DS_Store
*.DS_Store
.Rhistory
163 changes: 140 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,152 @@
# Brendo
Open resource for uniquely transcribed genes in brain endothelial cells

<img src="https://github.com/CompGenomeLab/brendo/blob/dev/home_banner.png"/>
Brendo (Brain Endothelial Open Resource) is a research web application for exploring genes differentially transcribed in brain endothelial cells relative to endothelial cells from other tissues. It combines method-specific differential-expression results with Robust Rank Aggregation (RRA), producing a four-list RRA ranking for Transmembrane Focus genes alongside expression context and proteomics evidence.

## Table of Contents
* [Overview](#overview)
* [Contents](#repocontents)
* [Directory Structure](#dirstructure)
- [Live application](https://brendo.sabanciuniv.edu/)
- [Manuscript preprint](https://doi.org/10.1101/2025.10.25.684508)
- [Source repository](https://github.com/CompGenomeLab/brendo)

## Features

## Overview <a name="overview"></a>
- Transmembrane Focus genes ordered by the four-list RRA ranking across DESeq2 and Wilcoxon rank-sum test (WRST) analyses.
- Eight method-specific lists spanning two methods, two expression directions, and full or selected comparator scopes.
- Searchable, sortable, filterable tables with all-row, filtered-row, and selected-row CSV export.
- Brain median normalized count and detection rate from the canonical 37-sample Brain cohort.
- Sample-level expression distributions across endothelial tissues.
- Human Protein Atlas, InterPro, and PXD018602 proteomics context.

The blood-brain barrier (BBB) plays a critical role in central nervous system homeostasis, yet comprehensive transcriptional profiling of brain microvascular endothelial cells (BMECs) remains limited. Leveraging the increasing availability of publicly accessible bulk RNA sequencing (RNA-seq) datasets, we
developed an integrated analytical framework to identify genes selectively enriched in BMECs compared to endothelial cells (ECs) from other tissues. To address the substantial batch effects inherent to multi-source bulk RNA-seq data, we combined two differential expression strategies, rank aggregation methods, and extensive quality controls. Our analysis incorporated EC samples from 16 different tissues and employed robust statistical workflows to mitigate technical confounders while preserving biologically meaningful signals. Validation using known BBB markers and independent proteomic evidence confirmed the reliability of our approach. We present Brendo (Brain Endothelial Open Resource), an open-access web platform providing searchable, filterable, and downloadable data on differentially expressed genes in BMECs. Brendo enables an in-depth exploration of brain endothelial gene expression and offers broader applications across vascular biology by supporting cross-tissue EC comparisons.
## Repository layout

## Contents <a name="repocontents"></a>
```text
brendo/
├── .gitignore
├── Alignment/ # Snakemake alignment and quantification pipeline
│ ├── Modules/
│ │ ├── Align/ # STAR alignment rules
│ │ ├── GetCounts/ # Rsubread featureCounts rules and scripts
│ │ └── SRActions/ # SRA download and FASTQ preparation rules
│ └── bin/ # Pipeline configuration and setup scripts
├── Server/
│ ├── FastAPI (Data)/
│ │ ├── Aggregs/ # RRA result tables
│ │ ├── Counts/ # MRN-normalized count matrix used by the app
│ │ ├── Lists/ # Eight method/direction/scope result tables
│ │ ├── Metadata/ # Sample, perfusion, and HPA metadata
│ │ ├── tests/ # Backend contract tests
│ │ ├── expression_metrics.py # Brain-cohort validation and expression metrics
│ │ ├── main.py # FastAPI routes
│ │ ├── services.py # Table preparation and Bokeh plots
│ │ ├── reqs.txt # Runtime Python dependencies
│ │ └── requirements-dev.txt # Backend test dependencies
│ └── ReactJS (Webpage)/
│ ├── e2e/ # Playwright browser tests
│ ├── public/ # HTML shell and static assets
│ ├── src/ # React pages, components, API client, and tests
│ ├── package.json
│ └── playwright.config.js
├── LICENSE
├── README.md
└── home_banner.png # Repository banner image
```

The alignment pipeline has separate input and cluster requirements; see [Alignment/README.md](Alignment/README.md). The committed result and count tables are sufficient to run the web application.

## Prerequisites

- Git
- Python 3.11
- Node.js and Yarn Classic; the repository does not pin a Node.js version
- A Chromium browser installed through Playwright when running end-to-end tests

No database is required. FastAPI reads the committed CSV files at process startup.

## Run locally

Clone the repository:

```bash
git clone https://github.com/CompGenomeLab/brendo.git
cd brendo
```

### 1. Start the data API

Run these commands from the backend directory because the service resolves data paths relative to its working directory:

```bash
cd "Server/FastAPI (Data)"
python3.11 -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r reqs.txt
python -m uvicorn main:app --reload --host 127.0.0.1 --port 8000
```

The API is then available at `http://127.0.0.1:8000/api/`.

### 2. Start the frontend

In a second terminal, from the repository root:

```bash
cd "Server/ReactJS (Webpage)"
yarn install --frozen-lockfile
yarn start
```

The development site opens at `http://localhost:3000`. Its development proxy forwards `/api/` requests to `http://localhost:8000`.

## Tests and production build

Backend tests:

```bash
cd "Server/FastAPI (Data)"
source venv/bin/activate
python -m pip install -r requirements-dev.txt
python -m pytest -q
```

Frontend unit tests and build:

This repository contains scripts required to reproduce the analysis, as well as code required to run Brendo locally / set up a copy of Brendo. See the subdirectories for detailed instructions. For a deployed version of Brendo, click <a href="https://brendo.sabanciuniv.edu"> here </a>.
```bash
cd "Server/ReactJS (Webpage)"
CI=true yarn test --watchAll=false
yarn build
```

Browser tests use deterministic API and Bokeh mocks to verify routes, selector-to-endpoint mappings, responsive layout, and automated accessibility checks:

### Directory Structure <a name="dirstructure"></a>
```bash
root
├── Alignment # Includes Snakemake pipeline used for alignment / quantification
│ ├── bin # Includes scripts ran through Snakemake
│ └── Modules # Includes Snakemake rules to be ran
│ ├── Align # Alignment rules
│ ├── GetCounts # Quantification rules
│ └── SRActions # Read file download rules
└── Server # Includes content required to run the web applicaiton
├── FastAPI (Data) # API requirements
└── ReactJS (Webpage) # Webpage requirements
cd "Server/ReactJS (Webpage)"
yarn playwright install chromium
yarn test:e2e
```

## Application boundary

The React client requests relative `/api/...` URLs. During development, `src/setupProxy.js` forwards those requests to FastAPI. A production deployment serves the generated `Server/ReactJS (Webpage)/build/` directory as static files, sends `/api/` to the FastAPI process, and returns `index.html` for client-side routes such as `/methods` and `/all-genes`.

Environment-specific reverse-proxy, TLS, process-control, host, and secret configuration belongs to the deployment environment and is not defined by this source repository. See the [frontend README](Server/ReactJS%20%28Webpage%29/README.md) and [backend README](Server/FastAPI%20%28Data%29/README.md) for component-specific details.

## Citation

Please cite the original publication:

```
@article {Beker2025.10.25.684508,
author = {Beker, Ozgur and Khorsand, Fereshteh Ramezani and Adebali, Ogun and Mustafaoglu, Nur},
title = {Brendo: an open resource for uniquely transcribed genes in brain endothelial cells},
elocation-id = {2025.10.25.684508},
year = {2025},
doi = {10.1101/2025.10.25.684508},
publisher = {Cold Spring Harbor Laboratory},
URL = {https://www.biorxiv.org/content/early/2025/10/26/2025.10.25.684508},
eprint = {https://www.biorxiv.org/content/early/2025/10/26/2025.10.25.684508.full.pdf},
journal = {bioRxiv}
}
```

## License and support

Code and documentation are distributed under the [MIT License](LICENSE). For application support, open a [GitHub issue](https://github.com/CompGenomeLab/brendo/issues) or email [ozgurbeker@sabanciuniv.edu](mailto:ozgurbeker@sabanciuniv.edu).
Loading