homoppi
| Testing | |
|---|---|
| Package | |
| Meta |
🧬 What is it?
homoppi predicts protein-protein interactions (PPIs) for any species with a
proteome by transferring experimentally known interactions through homology:
- Interolog mapping (IM) — a query pair (A, B) is predicted to interact when homologs (A′, B′), found by blastp, form a known PPI in a template library.
- Domain-domain interaction (DDI) — a query pair is predicted to interact when their Pfam domains (annotated by hmmscan) form a known domain-domain interaction (3did, optionally expanded with an EM algorithm from known PPIs).
Each method integrates all matched templates into a probability,
S = 1 − ∏(1 − s_template), and reports the full supporting evidence
(template pairs, species, alignment statistics) so every prediction is
traceable. The two methods complement each other: IM needs conserved
full-length homologs, while DDI still fires on fast-evolving proteins that
keep their domain architecture.
📦 Installation
pip install homoppi
conda install -c bioconda blast hmmer # external engines, found on PATH
Requires Python >= 3.11. Binaries can also be pointed to explicitly with
--blastp-bin / --hmmscan-bin / etc.
⚡ Quickstart
A tiny self-contained demo ships in examples/ — from that directory, every command below runs as-is:
# 1. build the reference database once
homoppi makedb --out db/ --ppi data/ppis.tsv --fasta 9606=data/templates_9606.fasta \
--ddi data/ddis.tsv --pfam-hmm data/toy_pfam.hmm
# 2. score query pairs with both methods and merge
homoppi run --db db/ --workdir runs/demo --fasta data/query.fasta \
--pairs data/pairs.tsv --fused
For real use, swap in your own libraries (see Input formats) and query
proteome. Batch mode scales to tens of thousands of pairs — unique proteins
are searched once, then all pairs are scored from the cached tables. Omitting
--pairs switches to proteome-wide all-vs-all mode. Each stage is also its
own command (blast, domainanno, interolog, ddi) with cached, resumable
results.
📄 Input formats
| File | Columns | Notes |
|---|---|---|
PPI library (--ppi) |
protein_a protein_b taxid score |
score optional, must be in [0, 1]; unscored templates fall back to --default-template-score (default 0) |
Template proteomes (--fasta TAXID=PATH, repeatable) |
FASTA | UniProt-style headers auto-parsed; else first token, or --id-regex; proteins absent from the PPI library are dropped |
| DDI library | --ddi-3did 3did flat file, --ddi-em EM scores, or --ddi pre-scored TSV pfam_a pfam_b score |
3did+EM scored as ½(S_known + S_EM) |
Pfam (--pfam-hmm, --pfam-dat) |
Pfam-A.hmm, Pfam-A.hmm.dat |
pressed into the db; .dat provides clans for --resolve-clan-overlap |
Query pairs (--pairs) |
2 columns, header optional | IDs must match the query FASTA headers (first token) |
Where the data comes from. PPI templates: IntAct
ships ready-made MI confidence scores, or aggregate several databases
(BioGRID, HitPredict, ...) and score them with the
HIPPIE scheme — either
way, normalize scores into [0, 1]. DDI templates:
3did flat file, optionally expanded with
homoppi ddi-em. Domain models: Pfam-A.hmm (+ .hmm.dat) from the
EBI FTP.
📊 Outputs
<workdir>/results/ per method (interolog.* / ddi.*), plus
combined.summary.tsv from run:
| Table | Columns |
|---|---|
*.summary.tsv (one row per query pair) |
query_a, query_b, n_templates, s_im/s_ddi, best_template_a/_b, best_template_taxid/_source, best_template_score |
interolog.evidence.tsv (one row per template) |
template pair, taxid, template_score, per-side pident, qcov, scov, evalue |
ddi.evidence.tsv (one row per template) |
domain pair, source (3did/em), template_score, per-side cevalue |
combined.summary.tsv |
n_im_templates, s_im, n_ddi_templates, s_ddi (+ s_fused = 1−(1−s_im)(1−s_ddi) with --fused) |
*.params.json |
snapshot of every effective parameter of the run |
Workdir layout: blast/ and hmmscan/ keep both raw and filtered search
results, logs/ the external-tool logs, state.json the stage cache that
powers resume.
🎛 Thresholds and options
Defaults follow the published method: blastp homologs at identity ≥ 30%,
query coverage ≥ 40%, E-value ≤ 1e-10; hmmscan domains at conditional
E-value ≤ 1e-10 (or --cut-tc). Self pairs are discarded unless
--include-self; --taxids restricts IM evidence to chosen template species.
Optional strictness knobs, all off by default:
--min-subject-coverage— also require the template side of a blastp hit to be covered (HSP-union fraction of the template length).--min-hmm-coverage— require a domain hit to span this fraction of the Pfam HMM model.--resolve-clan-overlap— overlapping hits from the same Pfam clan keep only the best one, preventing double-counted DDI evidence (needsmakedb --pfam-dat).
Tightening thresholds on an existing workdir only re-filters the cached raw output; loosening them (or changing the query) reruns the external search automatically.
🧮 Expanding the DDI library with EM
Domain pairs co-occurring across known interacting proteins are scored by expectation-maximization (Deng et al. 2002) and merged with 3did:
homoppi domainanno --db db/ --workdir runs/templates --fasta human.fasta
homoppi ddi-em --db db/ --domains runs/templates/hmmscan/domains.tsv --out em_scores.tsv
homoppi makedb --out db/ --ddi-3did 3did_flat --ddi-em em_scores.tsv
⏱ Performance
- Unique query proteins are searched once; scoring 1,000 pairs from cached tables takes seconds.
- Measured on 8 threads against a 7-species library (1.06 M scored PPIs, 49 k proteins): 300 query proteins × 1,000 pairs through both methods in ~5 minutes (hmmscan dominates).
- Proteome-wide mode streams evidence to disk; memory scales with the number of predicted pairs, not the evidence volume.
📚 References
- Schaefer MH, Fontaine JF, Vinayagam A, Porras P, Wanker EE, Andrade-Navarro MA. HIPPIE: Integrating protein interaction networks with experiment based quality scores. PLoS ONE 7, e31826 (2012). — template PPI confidence scoring
- Orchard S et al. The MIntAct project — IntAct as a common curation platform for 11 molecular interaction databases. Nucleic Acids Res 42, D358–D363 (2014). — scored template PPIs
- Yu H et al. Annotation transfer between genomes: protein-protein interologs and protein-DNA regulogs. Genome Res 14, 1107–1118 (2004). — interolog mapping
- Mosca R, Céol A, Stein A, Olivella R, Aloy P. 3did: a catalog of domain-based interactions of known three-dimensional structure. Nucleic Acids Res 42, D374–D379 (2014). — DDI templates
- Deng M, Mehta S, Sun F, Chen T. Inferring domain-domain interactions from protein-protein interactions. Genome Res 12, 1540–1548 (2002). — EM expansion of the DDI library
- Mistry J et al. Pfam: The protein families database in 2021. Nucleic Acids Res 49, D412–D419 (2021). — domain models
📄 License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file homoppi-0.1.0.tar.gz.
File metadata
- Download URL: homoppi-0.1.0.tar.gz
- Upload date:
- Size: 445.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c706eebeedd797ea355110fb8964f0ca1e66d6bf84c265e98f25345c7e63f983
|
|
| MD5 |
42ae387b10d02b65227a0eda032b7627
|
|
| BLAKE2b-256 |
4a9ade410f194b4d6297c766e241a6dbe3d043d8b3e9f8a0aa207c51c3e05b36
|
Provenance
The following attestation bundles were made for homoppi-0.1.0.tar.gz:
Publisher:
publish.yml on ChiaChunL/homoppi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
homoppi-0.1.0.tar.gz -
Subject digest:
c706eebeedd797ea355110fb8964f0ca1e66d6bf84c265e98f25345c7e63f983 - Sigstore transparency entry: 2499978587
- Sigstore integration time:
-
Permalink:
ChiaChunL/homoppi@e1630a576d04d11aa0454787d4dad2d5b401fc3d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/ChiaChunL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e1630a576d04d11aa0454787d4dad2d5b401fc3d -
Trigger Event:
push
-
Statement type:
File details
Details for the file homoppi-0.1.0-py3-none-any.whl.
File metadata
- Download URL: homoppi-0.1.0-py3-none-any.whl
- Upload date:
- Size: 40.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7c339ffcaebb6b4072234333c7ec074193a78020706a0987c4b473e77cd3b29
|
|
| MD5 |
8fa4413e7f6f47f017d5e3ae0ed9e834
|
|
| BLAKE2b-256 |
c48911277791a2cad5037bd3d86aad00b346e3ec28c0f6d8eb8451a5f9b36f1e
|
Provenance
The following attestation bundles were made for homoppi-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on ChiaChunL/homoppi
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
homoppi-0.1.0-py3-none-any.whl -
Subject digest:
a7c339ffcaebb6b4072234333c7ec074193a78020706a0987c4b473e77cd3b29 - Sigstore transparency entry: 2499978591
- Sigstore integration time:
-
Permalink:
ChiaChunL/homoppi@e1630a576d04d11aa0454787d4dad2d5b401fc3d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/ChiaChunL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e1630a576d04d11aa0454787d4dad2d5b401fc3d -
Trigger Event:
push
-
Statement type: