instanexus 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- instanexus-0.1.0/.github/workflows/cdci.yml +33 -0
- instanexus-0.1.0/.gitignore +26 -0
- instanexus-0.1.0/LICENSE +21 -0
- instanexus-0.1.0/PKG-INFO +238 -0
- instanexus-0.1.0/README.md +214 -0
- instanexus-0.1.0/environment.linux.yml +45 -0
- instanexus-0.1.0/environment.osx-arm64.yaml +42 -0
- instanexus-0.1.0/examples/README.md +1 -0
- instanexus-0.1.0/examples/dbg_workflow.ipynb +933 -0
- instanexus-0.1.0/examples/dbg_workflow_with_figures.ipynb +1008 -0
- instanexus-0.1.0/examples/greedy_workflow.ipynb +807 -0
- instanexus-0.1.0/examples/greedy_workflow_with_figures.ipynb +807 -0
- instanexus-0.1.0/examples/hybrid_workflow.ipynb +1531 -0
- instanexus-0.1.0/examples/hybrid_workflow_with_selector.ipynb +1572 -0
- instanexus-0.1.0/fasta/antibodies_normalized.fasta +70 -0
- instanexus-0.1.0/fasta/bsa.fasta +3 -0
- instanexus-0.1.0/fasta/contaminants.fasta +2724 -0
- instanexus-0.1.0/fasta/ma3.fasta +14 -0
- instanexus-0.1.0/git +0 -0
- instanexus-0.1.0/images/instanexus_logo 2.svg +75 -0
- instanexus-0.1.0/images/instanexus_logo.pdf +0 -0
- instanexus-0.1.0/images/instanexus_logo.svg +33 -0
- instanexus-0.1.0/images/instanexus_panel.pdf +0 -0
- instanexus-0.1.0/images/instanexus_panel.png +0 -0
- instanexus-0.1.0/images/instanexus_workflow.png +0 -0
- instanexus-0.1.0/inputs/BIND17.csv +30923 -0
- instanexus-0.1.0/inputs/NB10.csv +31932 -0
- instanexus-0.1.0/inputs/NB6.csv +32123 -0
- instanexus-0.1.0/inputs/bsa.csv +109359 -0
- instanexus-0.1.0/inputs/ma1.csv +78322 -0
- instanexus-0.1.0/json/colors.json +18 -0
- instanexus-0.1.0/json/gridsearch_params.json +18 -0
- instanexus-0.1.0/json/protease_colors.json +12 -0
- instanexus-0.1.0/json/sample_metadata.json +152 -0
- instanexus-0.1.0/nextflow/main.nf +28 -0
- instanexus-0.1.0/nextflow/modules/assembly_dbg.nf +22 -0
- instanexus-0.1.0/nextflow/modules/preprocess.nf +14 -0
- instanexus-0.1.0/nextflow/nextflow.config +32 -0
- instanexus-0.1.0/notebooks/cdr_plots.ipynb +311 -0
- instanexus-0.1.0/notebooks/composite_score.ipynb +2004 -0
- instanexus-0.1.0/notebooks/heatmaps_gridsearch.ipynb +487 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_chymotrypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_chymotrypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_chymotrypsin_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_chymotrypsin_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_chymotrypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_chymotrypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_chymotrypsin_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_chymotrypsin_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_legumain_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_chymotrypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_chymotrypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_chymotrypsin_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_chymotrypsin_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_protk_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_stats.json +22 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_trypsin_elastase_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/contigs_trypsin_stats.json +15 -0
- instanexus-0.1.0/notebooks/notebook_results/scaffolds_stats.json +22 -0
- instanexus-0.1.0/notebooks/policlonal_antibodies.ipynb +229 -0
- instanexus-0.1.0/notebooks/prot_optimization_dbg.ipynb +1196 -0
- instanexus-0.1.0/notebooks/prot_optimization_greedy.ipynb +1252 -0
- instanexus-0.1.0/notebooks/scaffold_scores_for_radar_plot_dbg.csv +13 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/contig_scores_antibodies_dbg.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/contig_scores_antibodies_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/contig_scores_antibodies_greedy.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/contig_scores_antibodies_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/scaffold_scores_antibodies_dbg.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/scaffold_scores_antibodies_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/scaffold_scores_antibodies_greedy.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/antibodies/scaffold_scores_antibodies_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/best_param_modes_contigs_dbg.csv +6 -0
- instanexus-0.1.0/notebooks/summary_tables/best_param_modes_contigs_greedy.csv +5 -0
- instanexus-0.1.0/notebooks/summary_tables/best_param_modes_scaffolds_dbg.csv +6 -0
- instanexus-0.1.0/notebooks/summary_tables/best_param_modes_scaffolds_greedy.csv +5 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/contig_scores_binders_dbg.csv +4 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/contig_scores_binders_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/contig_scores_binders_greedy.csv +4 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/contig_scores_binders_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/scaffold_scores_binders_dbg.csv +4 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/scaffold_scores_binders_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/scaffold_scores_binders_greedy.csv +4 -0
- instanexus-0.1.0/notebooks/summary_tables/binders/scaffold_scores_binders_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/bsa/contig_scores_bsa_dbg.csv +2 -0
- instanexus-0.1.0/notebooks/summary_tables/bsa/contig_scores_bsa_greedy.csv +2 -0
- instanexus-0.1.0/notebooks/summary_tables/bsa/scaffold_scores_bsa_dbg.csv +2 -0
- instanexus-0.1.0/notebooks/summary_tables/bsa/scaffold_scores_bsa_greedy.csv +2 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/contig_scores_nanobodies_dbg.csv +11 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/contig_scores_nanobodies_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/contig_scores_nanobodies_greedy.csv +11 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/contig_scores_nanobodies_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/scaffold_scores_nanobodies_dbg.csv +11 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/scaffold_scores_nanobodies_dbg.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/scaffold_scores_nanobodies_greedy.csv +11 -0
- instanexus-0.1.0/notebooks/summary_tables/nanobodies/scaffold_scores_nanobodies_greedy.xlsx +0 -0
- instanexus-0.1.0/notebooks/summary_tables/policlonals/contig_scores_policlonals_dbg.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/policlonals/contig_scores_policlonals_greedy.csv +1 -0
- instanexus-0.1.0/notebooks/summary_tables/policlonals/scaffold_scores_policlonals_dbg.csv +7 -0
- instanexus-0.1.0/notebooks/summary_tables/policlonals/scaffold_scores_policlonals_greedy.csv +1 -0
- instanexus-0.1.0/notes.md +45 -0
- instanexus-0.1.0/pyproject.toml +56 -0
- instanexus-0.1.0/src/README.md +0 -0
- instanexus-0.1.0/src/instanexus/__init__.py +0 -0
- instanexus-0.1.0/src/instanexus/__main__.py +54 -0
- instanexus-0.1.0/src/instanexus/alignment.py +50 -0
- instanexus-0.1.0/src/instanexus/clustering.py +105 -0
- instanexus-0.1.0/src/instanexus/clustering_stats.py +73 -0
- instanexus-0.1.0/src/instanexus/compute_statistics.py +94 -0
- instanexus-0.1.0/src/instanexus/consensus.py +336 -0
- instanexus-0.1.0/src/instanexus/dbg.py +384 -0
- instanexus-0.1.0/src/instanexus/generate_cluster_fasta.py +50 -0
- instanexus-0.1.0/src/instanexus/greedy_method.py +322 -0
- instanexus-0.1.0/src/instanexus/mapping.py +639 -0
- instanexus-0.1.0/src/instanexus/model_peptide_selector.py +467 -0
- instanexus-0.1.0/src/instanexus/opt/__init__.py +0 -0
- instanexus-0.1.0/src/instanexus/opt/gridsearch.py +99 -0
- instanexus-0.1.0/src/instanexus/opt/opt_dbg.py +221 -0
- instanexus-0.1.0/src/instanexus/opt/opt_greedy.py +203 -0
- instanexus-0.1.0/src/instanexus/preprocessing.py +817 -0
- instanexus-0.1.0/src/instanexus/scaffolding.py +259 -0
- instanexus-0.1.0/src/instanexus/script_dbg.py +294 -0
- instanexus-0.1.0/src/instanexus/script_greedy.py +303 -0
- instanexus-0.1.0/unittests/unittest_contigs_greedy.py +123 -0
- instanexus-0.1.0/unittests/unittest_scaffolds_greedy.py +42 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: Python application
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ["main"]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ["main"]
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
format:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
|
+
- uses: psf/black@stable
|
|
17
|
+
- uses: isort/isort-action@v1
|
|
18
|
+
lint:
|
|
19
|
+
name: Lint with ruff
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- uses: actions/setup-python@v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.11"
|
|
27
|
+
- name: Install ruff
|
|
28
|
+
run: |
|
|
29
|
+
pip install ruff
|
|
30
|
+
- name: Lint with ruff
|
|
31
|
+
run: |
|
|
32
|
+
# stop the build if there are Python syntax errors or undefined names
|
|
33
|
+
ruff check src unittests
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# data
|
|
2
|
+
outputs/
|
|
3
|
+
figures/
|
|
4
|
+
logs/
|
|
5
|
+
|
|
6
|
+
# ignore compiled python files
|
|
7
|
+
*.pyc
|
|
8
|
+
__pycache__/
|
|
9
|
+
.DS_Store
|
|
10
|
+
environment.yml
|
|
11
|
+
|
|
12
|
+
# files
|
|
13
|
+
inputs/BIND15.csv
|
|
14
|
+
inputs/BIND16.csv
|
|
15
|
+
inputs/ma2.csv
|
|
16
|
+
inputs/ma3.csv
|
|
17
|
+
inputs/NB1.csv
|
|
18
|
+
inputs/NB2.csv
|
|
19
|
+
inputs/NB3.csv
|
|
20
|
+
inputs/NB4.csv
|
|
21
|
+
inputs/NB5.csv
|
|
22
|
+
inputs/NB8.csv
|
|
23
|
+
inputs/NB12.csv
|
|
24
|
+
inputs/NB13.csv
|
|
25
|
+
inputs/pa.csv
|
|
26
|
+
inputs/pb.csv
|
instanexus-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Multi-omics Network Analytics Group
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: instanexus
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: End-to-end workflow for de novo protein sequencing based on InstaNovo
|
|
5
|
+
Project-URL: Homepage, https://github.com/Multiomics-Analytics-Group/InstaNexus
|
|
6
|
+
Project-URL: Issues, https://github.com/Multiomics-Analytics-Group/InstaNexus/issues
|
|
7
|
+
Author-email: Marco Reverenna <marcor@dtu.dk>
|
|
8
|
+
License: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: assembly,bioinformatics,de novo,mass spectrometry,protein sequencing,proteomics
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Requires-Python: >=3.10
|
|
15
|
+
Requires-Dist: biopython>=1.85
|
|
16
|
+
Requires-Dist: logomaker>=0.8
|
|
17
|
+
Requires-Dist: matplotlib>=3.8.0
|
|
18
|
+
Requires-Dist: networkx>=3.3
|
|
19
|
+
Requires-Dist: pandas>=2.3.1
|
|
20
|
+
Requires-Dist: plotly>=6.2.0
|
|
21
|
+
Requires-Dist: seaborn>=0.13.2
|
|
22
|
+
Requires-Dist: tqdm>=4.67.1
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
|
|
25
|
+
<p align="center">
|
|
26
|
+
<img src="images/instanexus_logo 2.svg" width="600" alt="InstaNexus logo">
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
<p align="center"><em>A de novo protein sequencing workflow</em></p>
|
|
30
|
+
|
|
31
|
+
<p align="center">
|
|
32
|
+
<img src="https://img.shields.io/badge/environment-conda-blue" alt="Conda">
|
|
33
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
|
34
|
+
<img src="https://img.shields.io/badge/python-3.9+-blue" alt="Python">
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Table of Contents
|
|
40
|
+
- [Introduction](#introduction)
|
|
41
|
+
- [Features](#features)
|
|
42
|
+
- [Workflow Diagram](#workflow-diagram)
|
|
43
|
+
- [Repository Structure](#repository-structure)
|
|
44
|
+
- [Installation](#installation)
|
|
45
|
+
- [Command-Line Usage](#command-line-usage)
|
|
46
|
+
- [Hyperparameter Optimization](#hyperparameter-optimization)
|
|
47
|
+
- [License](#license)
|
|
48
|
+
- [Acknowledgments](#acknowledgments)
|
|
49
|
+
- [References](#references)
|
|
50
|
+
- [Citation](#citation)
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Introduction
|
|
55
|
+
|
|
56
|
+
InstaNexus is a generalizable, end-to-end workflow for direct protein sequencing, tailored to reconstruct full-length protein therapeutics such as antibodies and nanobodies. It integrates AI-driven de novo peptide sequencing with optimized assembly and scoring strategies to maximize accuracy, coverage, and functional relevance.
|
|
57
|
+
|
|
58
|
+
This pipeline enables robust reconstruction of critical protein regions, advancing applications in therapeutic discovery, immune profiling, and protein engineering.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Features
|
|
63
|
+
|
|
64
|
+
- 🧬 Supports De Bruijn Graph and Greedy-based assembly
|
|
65
|
+
- ⚗️ Handles multiple protease digestions (Trypsin, LysC, GluC, etc.)
|
|
66
|
+
- 🧹 Integrated contaminant removal and confidence filtering
|
|
67
|
+
- 🧩 Clustering, alignment, and consensus sequence reconstruction
|
|
68
|
+
- 🔗 Integrates with external tools:
|
|
69
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2) for fast clustering
|
|
70
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/) for high-quality alignment
|
|
71
|
+
- 📊 Output-ready for downstream analysis and visualization
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Workflow Diagram
|
|
76
|
+
|
|
77
|
+
<p align="center">
|
|
78
|
+
<img src="images/instanexus_panel.png" width="900" alt="InstaNexus Workflow">
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Repository Structure
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
| Folder / File | Description |
|
|
87
|
+
|----------------|-------------|
|
|
88
|
+
| `environment.linux.yml` | Conda environment for Linux systems |
|
|
89
|
+
| `environment.osx-arm64.yaml` | Conda environment for macOS (Apple Silicon) |
|
|
90
|
+
| `src/instanexus/` | Core InstaNexus package (modules + CLI) |
|
|
91
|
+
| `src/instanexus/__main__.py` | Entry point for CLI (`instanexus` command) |
|
|
92
|
+
| `src/instanexus/script_dbg.py` | De Bruijn Graph-based assembly |
|
|
93
|
+
| `src/instanexus/script_greedy.py` | Greedy-based peptide assembly |
|
|
94
|
+
| `src/opt/` | Grid search and optimization workflows |
|
|
95
|
+
| `fasta/` | FASTA reference and contaminant sequences |
|
|
96
|
+
| `inputs/` | Example input CSV files |
|
|
97
|
+
| `json/` | Metadata and parameter configuration files |
|
|
98
|
+
| `notebooks/` | Jupyter notebooks for analysis and visualization |
|
|
99
|
+
| `images/` | Logos and workflow figures |
|
|
100
|
+
| `outputs/` | Generated results (created during execution) |
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Installation
|
|
105
|
+
|
|
106
|
+
- [Conda](https://docs.conda.io/en/latest/)
|
|
107
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2)
|
|
108
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/)
|
|
109
|
+
|
|
110
|
+
> [!IMPORTANT]
|
|
111
|
+
> MMseqs2 and Clustal Omega are available through Conda, but compatibility depends on your system architecture.
|
|
112
|
+
> - 🔍 [Clustal Omega on Anaconda.org](https://anaconda.org/search?q=clustalo)
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Getting Started
|
|
117
|
+
|
|
118
|
+
Follow these steps to clone the repository and set up the environment using Conda:
|
|
119
|
+
|
|
120
|
+
### 1. Clone the repository
|
|
121
|
+
|
|
122
|
+
To clone and set up the environment:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone git@github.com:Multiomics-Analytics-Group/InstaNexus.git
|
|
126
|
+
cd instanexus
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 2. Create and activate the Conda environment
|
|
130
|
+
|
|
131
|
+
Create instanexus conda environment for linux.
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
conda env create -f environment.linux.yml
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Create instanexus conda environment for OS.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
conda env create -f environment.osx-arm64.yaml
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Activate:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
conda activate instanexus
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### 3. Install InstaNexus as a local package
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
pip install -e .
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Then verify the CLI installation:
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
instanexus --version
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Command-line usage
|
|
166
|
+
|
|
167
|
+
After activating the environment, you can run InstaNexus directly from the terminal:
|
|
168
|
+
```bash
|
|
169
|
+
instanexus --help
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### Run De Bruijn graph assembly
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
instanexus dbg --input_csv inputs/sample.csv --chain light --folder_outputs outputs --reference
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Run greedy assembly
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
instanexus greedy --input_csv inputs/sample.csv --folder_outputs outputs
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Hyperparameter Optimization
|
|
190
|
+
|
|
191
|
+
To launch the hyperparameter grid search, run the following command from the project root (the folder containing ```src/``` and ```json/```):
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
python -m src.opt.gridsearch
|
|
195
|
+
```
|
|
196
|
+
**Adjusting Parameters**
|
|
197
|
+
|
|
198
|
+
Grid search parameters for both the De Bruijn graph (dbg) and Greedy (greedy) assembly methods are defined in:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
json/gridsearch_params.json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
To test more (or fewer) combinations, edit the arrays for each parameter in this file.
|
|
205
|
+
|
|
206
|
+
## License
|
|
207
|
+
|
|
208
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Acknowledgments
|
|
213
|
+
|
|
214
|
+
InstaNexus was developed at **DTU Biosustain** and **DTU Bioengineering**.
|
|
215
|
+
|
|
216
|
+
We are grateful to the **DTU Bioengineering Proteomics Core Facility** for maintenance and operation of mass spectrometry instrumentation.
|
|
217
|
+
|
|
218
|
+
We also thank the **Informatics Platform at DTU Biosustain** for their support during the development and optimization of InstaNexus.
|
|
219
|
+
|
|
220
|
+
Special thanks to the users and developers of:
|
|
221
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2)
|
|
222
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/)
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## References
|
|
227
|
+
|
|
228
|
+
1. Hauser, M., et al. **MMseqs2: ultra fast and sensitive sequence searching**. *Nature Biotechnology* 35, 1026–1028 (2016). https://doi.org/10.1038/nbt.3988
|
|
229
|
+
2. Sievers, F., et al. **Fast, scalable generation of high-quality protein multiple sequence alignments using Clustal Omega**. *Molecular Systems Biology* 7, 539 (2011). https://doi.org/10.1038/msb.2011.75
|
|
230
|
+
3. Eloff, K., Kalogeropoulos, K., Mabona, A., Morell, O., Catzel, R., Rivera-de-Torre, E., ... & Jenkins, T. P. (2025). **InstaNovo enables diffusion-powered de novo peptide sequencing in large-scale proteomics experiments.** Nature Machine Intelligence, 1-15.
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Citation
|
|
235
|
+
|
|
236
|
+
If you find this project useful in your research or work, please cite it as:
|
|
237
|
+
|
|
238
|
+
Reverenna M., Nielsen M. W., Wolff D. S., Lytra E., Colaianni P. D., Ljungars A., Laustsen A. H., Schoof E. M., Van Goey J., Jenkins T. P., Lukassen M. V., Santos A., Kalogeropoulos K. (2025). *Generalizable direct protein sequencing with InstaNexus* [Preprint]. bioRxiv. https://doi.org/10.1101/2025.07.25.666861
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="images/instanexus_logo 2.svg" width="600" alt="InstaNexus logo">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center"><em>A de novo protein sequencing workflow</em></p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="https://img.shields.io/badge/environment-conda-blue" alt="Conda">
|
|
9
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License">
|
|
10
|
+
<img src="https://img.shields.io/badge/python-3.9+-blue" alt="Python">
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Table of Contents
|
|
16
|
+
- [Introduction](#introduction)
|
|
17
|
+
- [Features](#features)
|
|
18
|
+
- [Workflow Diagram](#workflow-diagram)
|
|
19
|
+
- [Repository Structure](#repository-structure)
|
|
20
|
+
- [Installation](#installation)
|
|
21
|
+
- [Command-Line Usage](#command-line-usage)
|
|
22
|
+
- [Hyperparameter Optimization](#hyperparameter-optimization)
|
|
23
|
+
- [License](#license)
|
|
24
|
+
- [Acknowledgments](#acknowledgments)
|
|
25
|
+
- [References](#references)
|
|
26
|
+
- [Citation](#citation)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Introduction
|
|
31
|
+
|
|
32
|
+
InstaNexus is a generalizable, end-to-end workflow for direct protein sequencing, tailored to reconstruct full-length protein therapeutics such as antibodies and nanobodies. It integrates AI-driven de novo peptide sequencing with optimized assembly and scoring strategies to maximize accuracy, coverage, and functional relevance.
|
|
33
|
+
|
|
34
|
+
This pipeline enables robust reconstruction of critical protein regions, advancing applications in therapeutic discovery, immune profiling, and protein engineering.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
- 🧬 Supports De Bruijn Graph and Greedy-based assembly
|
|
41
|
+
- ⚗️ Handles multiple protease digestions (Trypsin, LysC, GluC, etc.)
|
|
42
|
+
- 🧹 Integrated contaminant removal and confidence filtering
|
|
43
|
+
- 🧩 Clustering, alignment, and consensus sequence reconstruction
|
|
44
|
+
- 🔗 Integrates with external tools:
|
|
45
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2) for fast clustering
|
|
46
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/) for high-quality alignment
|
|
47
|
+
- 📊 Output-ready for downstream analysis and visualization
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Workflow Diagram
|
|
52
|
+
|
|
53
|
+
<p align="center">
|
|
54
|
+
<img src="images/instanexus_panel.png" width="900" alt="InstaNexus Workflow">
|
|
55
|
+
</p>
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Repository Structure
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
| Folder / File | Description |
|
|
63
|
+
|----------------|-------------|
|
|
64
|
+
| `environment.linux.yml` | Conda environment for Linux systems |
|
|
65
|
+
| `environment.osx-arm64.yaml` | Conda environment for macOS (Apple Silicon) |
|
|
66
|
+
| `src/instanexus/` | Core InstaNexus package (modules + CLI) |
|
|
67
|
+
| `src/instanexus/__main__.py` | Entry point for CLI (`instanexus` command) |
|
|
68
|
+
| `src/instanexus/script_dbg.py` | De Bruijn Graph-based assembly |
|
|
69
|
+
| `src/instanexus/script_greedy.py` | Greedy-based peptide assembly |
|
|
70
|
+
| `src/opt/` | Grid search and optimization workflows |
|
|
71
|
+
| `fasta/` | FASTA reference and contaminant sequences |
|
|
72
|
+
| `inputs/` | Example input CSV files |
|
|
73
|
+
| `json/` | Metadata and parameter configuration files |
|
|
74
|
+
| `notebooks/` | Jupyter notebooks for analysis and visualization |
|
|
75
|
+
| `images/` | Logos and workflow figures |
|
|
76
|
+
| `outputs/` | Generated results (created during execution) |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Installation
|
|
81
|
+
|
|
82
|
+
- [Conda](https://docs.conda.io/en/latest/)
|
|
83
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2)
|
|
84
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/)
|
|
85
|
+
|
|
86
|
+
> [!IMPORTANT]
|
|
87
|
+
> MMseqs2 and Clustal Omega are available through Conda, but compatibility depends on your system architecture.
|
|
88
|
+
> - 🔍 [Clustal Omega on Anaconda.org](https://anaconda.org/search?q=clustalo)
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Getting Started
|
|
93
|
+
|
|
94
|
+
Follow these steps to clone the repository and set up the environment using Conda:
|
|
95
|
+
|
|
96
|
+
### 1. Clone the repository
|
|
97
|
+
|
|
98
|
+
To clone and set up the environment:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
git clone git@github.com:Multiomics-Analytics-Group/InstaNexus.git
|
|
102
|
+
cd instanexus
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### 2. Create and activate the Conda environment
|
|
106
|
+
|
|
107
|
+
Create instanexus conda environment for linux.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
conda env create -f environment.linux.yml
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Create instanexus conda environment for OS.
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
conda env create -f environment.osx-arm64.yaml
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Activate:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
conda activate instanexus
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### 3. Install InstaNexus as a local package
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
pip install -e .
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Then verify the CLI installation:
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
instanexus --version
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Command-line usage
|
|
142
|
+
|
|
143
|
+
After activating the environment, you can run InstaNexus directly from the terminal:
|
|
144
|
+
```bash
|
|
145
|
+
instanexus --help
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Run De Bruijn graph assembly
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
instanexus dbg --input_csv inputs/sample.csv --chain light --folder_outputs outputs --reference
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Run greedy assembly
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
instanexus greedy --input_csv inputs/sample.csv --folder_outputs outputs
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Hyperparameter Optimization
|
|
166
|
+
|
|
167
|
+
To launch the hyperparameter grid search, run the following command from the project root (the folder containing ```src/``` and ```json/```):
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
python -m src.opt.gridsearch
|
|
171
|
+
```
|
|
172
|
+
**Adjusting Parameters**
|
|
173
|
+
|
|
174
|
+
Grid search parameters for both the De Bruijn graph (dbg) and Greedy (greedy) assembly methods are defined in:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
json/gridsearch_params.json
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
To test more (or fewer) combinations, edit the arrays for each parameter in this file.
|
|
181
|
+
|
|
182
|
+
## License
|
|
183
|
+
|
|
184
|
+
This project is licensed under the [MIT License](LICENSE).
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Acknowledgments
|
|
189
|
+
|
|
190
|
+
InstaNexus was developed at **DTU Biosustain** and **DTU Bioengineering**.
|
|
191
|
+
|
|
192
|
+
We are grateful to the **DTU Bioengineering Proteomics Core Facility** for maintenance and operation of mass spectrometry instrumentation.
|
|
193
|
+
|
|
194
|
+
We also thank the **Informatics Platform at DTU Biosustain** for their support during the development and optimization of InstaNexus.
|
|
195
|
+
|
|
196
|
+
Special thanks to the users and developers of:
|
|
197
|
+
- [MMseqs2](https://github.com/soedinglab/MMseqs2)
|
|
198
|
+
- [Clustal Omega](https://www.ebi.ac.uk/Tools/msa/clustalo/)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## References
|
|
203
|
+
|
|
204
|
+
1. Hauser, M., et al. **MMseqs2: ultra fast and sensitive sequence searching**. *Nature Biotechnology* 35, 1026–1028 (2016). https://doi.org/10.1038/nbt.3988
|
|
205
|
+
2. Sievers, F., et al. **Fast, scalable generation of high-quality protein multiple sequence alignments using Clustal Omega**. *Molecular Systems Biology* 7, 539 (2011). https://doi.org/10.1038/msb.2011.75
|
|
206
|
+
3. Eloff, K., Kalogeropoulos, K., Mabona, A., Morell, O., Catzel, R., Rivera-de-Torre, E., ... & Jenkins, T. P. (2025). **InstaNovo enables diffusion-powered de novo peptide sequencing in large-scale proteomics experiments.** Nature Machine Intelligence, 1-15.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Citation
|
|
211
|
+
|
|
212
|
+
If you find this project useful in your research or work, please cite it as:
|
|
213
|
+
|
|
214
|
+
Reverenna M., Nielsen M. W., Wolff D. S., Lytra E., Colaianni P. D., Ljungars A., Laustsen A. H., Schoof E. M., Van Goey J., Jenkins T. P., Lukassen M. V., Santos A., Kalogeropoulos K. (2025). *Generalizable direct protein sequencing with InstaNexus* [Preprint]. bioRxiv. https://doi.org/10.1101/2025.07.25.666861
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: instanexus
|
|
2
|
+
channels:
|
|
3
|
+
- bioconda
|
|
4
|
+
- conda-forge
|
|
5
|
+
- defaults
|
|
6
|
+
dependencies:
|
|
7
|
+
- biopython=1.85
|
|
8
|
+
- pcre2=10.42
|
|
9
|
+
- bzip2=1.0.8
|
|
10
|
+
- zlib=1.2.13
|
|
11
|
+
- wheel=0.45.1
|
|
12
|
+
- ncurses=6.5
|
|
13
|
+
- readline=8.2
|
|
14
|
+
- xz=5.6.4
|
|
15
|
+
- gettext=0.21.0
|
|
16
|
+
- ca-certificates=2025.2.25
|
|
17
|
+
- wget=1.25.0
|
|
18
|
+
- llvm-openmp=17.0.6
|
|
19
|
+
- openssl==3.0.17
|
|
20
|
+
- libxml2=2.13.8
|
|
21
|
+
- python=3.9.21
|
|
22
|
+
- libexpat=2.7.0
|
|
23
|
+
- setuptools=80.9.0
|
|
24
|
+
- icu=73.1
|
|
25
|
+
- libffi=3.4.6
|
|
26
|
+
- libiconv=1.16
|
|
27
|
+
- pandas=2.3.1
|
|
28
|
+
- pip=25.1.1
|
|
29
|
+
- gawk=5.3.1
|
|
30
|
+
- tk=8.6.14
|
|
31
|
+
- libcxx=17.0.6
|
|
32
|
+
- sqlite=3.45.3
|
|
33
|
+
- tqdm=4.67.1
|
|
34
|
+
- libidn2=2.3.4
|
|
35
|
+
- libunistring=0.9.10
|
|
36
|
+
- clustalo=1.2.4
|
|
37
|
+
- matplotlib-base
|
|
38
|
+
- seaborn=0.13.2
|
|
39
|
+
- plotly=6.2.0
|
|
40
|
+
- logomaker=0.8
|
|
41
|
+
- networkx
|
|
42
|
+
- mmseqs2
|
|
43
|
+
- pip
|
|
44
|
+
- pip:
|
|
45
|
+
- kaleido==0.2.1
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
name: instanexus
|
|
2
|
+
channels:
|
|
3
|
+
- conda-forge
|
|
4
|
+
- bioconda
|
|
5
|
+
- defaults
|
|
6
|
+
|
|
7
|
+
dependencies:
|
|
8
|
+
# core runtime dependencies
|
|
9
|
+
- python=3.11
|
|
10
|
+
- biopython=1.85
|
|
11
|
+
- pandas=2.3.1
|
|
12
|
+
- upsetplot
|
|
13
|
+
- tqdm=4.67.1
|
|
14
|
+
- seaborn=0.13.2
|
|
15
|
+
- matplotlib-base
|
|
16
|
+
- plotly=6.2.0
|
|
17
|
+
- logomaker=0.8
|
|
18
|
+
- networkx
|
|
19
|
+
- mmseqs2
|
|
20
|
+
- sbl::clustalomega
|
|
21
|
+
- gawk
|
|
22
|
+
- wget
|
|
23
|
+
|
|
24
|
+
# notebook
|
|
25
|
+
- ipykernel
|
|
26
|
+
- nbformat
|
|
27
|
+
|
|
28
|
+
# development tools
|
|
29
|
+
- black
|
|
30
|
+
- pytest
|
|
31
|
+
- coverage
|
|
32
|
+
- mypy
|
|
33
|
+
- pre-commit
|
|
34
|
+
|
|
35
|
+
# packaging
|
|
36
|
+
- pip
|
|
37
|
+
- pip:
|
|
38
|
+
- kaleido==0.2.1
|
|
39
|
+
- build
|
|
40
|
+
- twine
|
|
41
|
+
- hatchling
|
|
42
|
+
- wheel
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
In these notebooks we provide examples for greedy and DBG methods, with and without plots.
|