Analysis of single-cell, spatial proteomics data to investigate protein gradients along a defined spatial trajectory
Data analysis scripts for "Single-cell spatial proteomics maps human liver zonation patterns and their vulnerability to disruption in tissue architecture ". This repository contains the computational framework for analyzing single-cell, spatial proteomics (scDVP) data across liver zonation gradients using linear mixed models, without arbitrary binning. The method implements a linear mixed model approach where a random intercept effect on patient origin controls for differing expression baselines between samples, enabling robust analysis across clinical cohorts while accounting for patient-to-patient variance. The key output of this analysis is the zonation coefficient (β₁), which quantifies both the direction and strength of protein expression gradients along the zonation trajectory. This statistical framework allows detection of subtle zonation patterns that might be missed by traditional binning methods, providing insights into spatial-dependent functionality of hepatocytes in both health and disease. While developed for liver zonation analysis, this framework can be applied to study any protein gradient phenomena where spatial organization influences biological function.
To install the software, first create an isolated conda environment, and add poetry (our dependency manager of choice) to its dependencies:
conda create -n humanscDVP python=3.11 poetry
conda activate humanscDVPNavigate to the repository folder, and run:
poetry installIn order to convert mouse gene names to their human orthologs, you will also need to install the pyorthomap package from GitHub:
pip install git+https://github.com/vitkl/orthologsBioMART.gitTo reproduce the output provided in results, run the following sequence of commands:
- Run LMM analysis for healthy human samples:
python LMM_analysis.py --data_path ../data/human/ --patient_group 1 --plot --save --species human- Run LMM analysis for desmoplastic human samples:
python LMM_analysis.py --data_path ../data/human/ --patient_group 2 --plot --save --species human- Run LMM analysis for mouse samples:
python LMM_analysis.py --data_path ../data/mouse/ --patient_group 3 --plot --save --species mouse- Compare slopes between healthy and desmoplastic human samples:
python Compare_slopes.py --control_model_results ../results/human_healthy/results_1_cutoff\=0.7.tsv --treatment_model_results ../results/human_desmoplasia/results_2_cutoff\=0.7.tsv --plot --one_sided