This repository contains the Auto-Proteomics analysis pipeline for generating standardised reports from protein intensity datasets. Welcome.
The tool produces common outputs from mass spec proteomic and phosphoproteomic data. We want to make this possible for people with limited coding experience by requiring only some preparation steps and one line of code to run the pipeline. Parameters are determined in a "config" file so you don't need to look through the code to change things.
By producing common exploratory outputs automatically, we hope you can spend more time thinking about your data and results. Note, this pipeline produces results automatically without thinking about the idiosyncracies of your beautiful, unique dataset. This should never be used without a full evaluation and validation of the results. Best practice would be to run a similar analysis with your favourite software or collaborator to confirm your conclusions are supported.
If you you want to use the results, please review the tool carefully. We hope the docs give you an idea of what we are doing and why. We have tried to annotate the code so that you can also understand how the pipeline works. If you would like further info or to suggest an improvement to the pipeline, please get in touch. Contact details below.
- Processes mass spec-generated protein abundance data.
- Generates an HTML report with common proteomics outputs.
- Customisable templates.
stable branch is the most tested and should work reliably. If not, please let me know! It would be best to quick start using that branch. staging has new features that haven't been fully tested. Other branches are for developing new features.
- a conda distribution.
- git for mac or Git bash for windows.
- Somewhere to run command line commands. We recommend VS Code) and can't advise on other platforms e.g. conda prompt.
This tool has been tested on Windows and macOS.
git clone https://github.com/UCL-Biosciences/Auto-Prot
cd Auto-Prot
Optional switch to staging branch: git checkout staging.
This allows you to make changes to the config file withour your setup being sent to the main repo: git update-index --skip-worktree configs/auto-prot-config.yaml. Needed if you plan to make edits and suggest them as updates for the tool.
Create the environment and download dependencies using the information in configuration files: conda env create -f configs/auto-prot-env-YOUR-OS-HERE.yml. Which version you use will depend on whether you are using a Windows machine or a Mac. You will need to create environments for the general pipeline and the R functions:
- For general processing:
conda env create -f configs/auto-prot-env-windowsOS.ymlconda env create -f configs/auto-prot-env-macOS.yml - For R-based differential expression:
conda env create -f configs/auto-prot-env-limma-windowsOS.ymlconda env create -f configs/auto-prot-env-limma-macOS.yml
Activate the environment with: conda activate auto-proteomics. If you keep getting a message about running conda init, try running source activate. You might have to do that at the start of every session. If you get a command not found error, you will need to run the following code, replacing the path with the path to conda on your machine:
source ~/miniconda3/etc/profile.d/conda.sh # Or path to where your conda is
conda activate some-conda-environment
Optional After creating the conda environment, run: pre-commit install. This sets up automatic code formatting and linting before each commit.
The repository contains example protein and metadata files: proteindata.csv and metadata.csv files, generated by autoprot/utils/gen_random_data.py. This will give a quick picture of how the input data should be formatted. You can overwrite these files with your own data (requirements given in /docs/Workflow.md).
To generate the output, you can run python main.py. Runtime depends on number of proteins/samples and computer spec, but as a general guide, the pipeline should the whole pipeline should run in 5-20 mins for a few thousand proteins and 10-20 samples.
Running python main.py will generate:
- Normalised protein abundance tables
- Summary statistics
- PCA and clustering plots
- Differential expression tables
- An html report summarising the results. An example generated from simulated data is available in
../docs/
These are saved in /output. An example of the report generated is in report/example-report-out.html - if it doesn't show properly in the repo, try downloading and opening locally.
/docs # Documentation files
/report # report template
/autoprot # Processing & analysis scripts
/main.py # Python script for generating outputs
/input/data # input data. By default: `human_genes.txt`. Optional: `run autoprot/utils/gen_random_data.py` to generate additional proteindata.csv and metadata.csv in input/data
/output # plots and tables generated by `main.py`. report saved as output/report-out.html
For more details on the analysis and calculations, see docs/Workflow.md and docs/stats_details.md/
We want this tool to be useful and accessible for as many people as possible - comments and feedback are very welcome. Please send to james.d.gilbert@ucl.ac.uk.
For help, please first open an issue and send an email if required.
If you use the outputs of this tool in a paper, please cite: Gilbert, J.D, Zenezini Chiozzi, R., & Thalassinos, K. (2026). Auto-Prot: A reproducible, no-code python tool for running exploratory proteomics analyses (v1.0). Zenodo. https://doi.org/10.5281/zenodo.19203298
There is a configuration (config) file that allows the user to control lots of parts of the analysis without editing any code. For instructions, see the workflow document. Changes to the config file are ignored (config file in .gitignore) so the default config doesn't get overwritten and continues to work when downloaded.
Contributions are welcome!
If you’d like to contribute a bug fix, feature, or improvement:
- Fork this repository and create a new branch from
staging - Make your changes
- Ensure code passes
pre-commitchecks (runpre-commit run --all-files) - Open a pull request to the
stagingbranch with a short description of your changes
Please note:
- All code should be commented and use informative function/variable names
This project uses a standard Python package layout and is installable via pip. The core code lives in the autoprot/ directory and is defined as a package using pyproject.toml. Note: The package is not published on PyPI. Users must clone the repository and install it locally. It can also be cloned and used via python main.py - pip installing is not required.
If you update the package structure or plan to share the repo: python -m build will generate .tar.gz and .whl files in the dist/ directory. These are needed for pip install .
The project uses pytest for testing. Test files are located in the tests/ directory and follow standard pytest conventions.
To run all tests: pytest. If you’re developing new features or modifying existing functionality, please include corresponding tests to ensure the code remains correct and maintainable. Tests should cover both typical and edge cases where applicable.
To see the test coverage, run pytest --cov=autoprot --cov-report=term-missing from the main folder. This will show coverage for the autoprot package and highlight any lines not exercised by tests.
The outputs generated by this tool are exploratory only. We recommend a thorough examination of the data using the code in this repository or with other available tools. E.g.:
- MS-DAP R package
- proDA seems a good option if you have a lot of missing values or want to explicitly include missingness in your calculations.
- AlphaPepStats Python package
- Perseus platform has a GUI with lots of functionality and doesn't require any coding.