Download README.md from ChatterjeeLab/SNOOPPI: direct link, hf CLI and curl.
- Browser
- Download file 10.8 kB
-
https://huggingface.co/datasets/ChatterjeeLab/SNOOPPI/resolve/main/README.md
- Command line
-
hf download hf://datasets/ChatterjeeLab/SNOOPPI/README.md
-
curl -L -o README.md https://huggingface.co/datasets/ChatterjeeLab/SNOOPPI/resolve/main/README.md
configs:
- config_name: default
data_files:
- split: positive
path: data/positive-*
- split: negative
path: data/negative-*
- split: unknown
path: data/unknown-*
dataset_info:
features:
- name: SNOOPPI_final_label
dtype: string
- name: MI0915_final_label
dtype: string
- name: SNOOPPI_Partner_A_ID
dtype: string
- name: SNOOPPI_Partner_B_ID
dtype: string
- name: SNOOPPI_Pair_ID
dtype: string
- name: SNOOPPI_Labeled_Pair_ID
dtype: string
- name: seq_sort
dtype: string
- name: unique_interaction_mi_terms
dtype: string
- name: partner_A_sequence
dtype: string
- name: partner_B_sequence
dtype: string
- name: partner_A_length
dtype: string
- name: partner_B_length
dtype: string
- name: partner_A_mol_type
dtype: string
- name: partner_B_mol_type
dtype: string
- name: intact_interaction_ids
dtype: string
- name: n_intact_interaction_ids
dtype: string
- name: partner_A_intact_interactor_ids
dtype: string
- name: partner_B_intact_interactor_ids
dtype: string
- name: partner_A_n_intact_interactor_ids
dtype: string
- name: partner_B_n_intact_interactor_ids
dtype: string
- name: partner_A_uniprot_ids
dtype: string
- name: partner_B_uniprot_ids
dtype: string
- name: partner_A_gene_names
dtype: string
- name: partner_B_gene_names
dtype: string
- name: partner_A_species
dtype: string
- name: partner_B_species
dtype: string
- name: mi_scores_all
dtype: string
- name: mi_score_mean
dtype: string
- name: mi_score_min
dtype: string
- name: mi_score_max
dtype: string
- name: assays_unique
dtype: string
- name: n_assays_unique
dtype: string
- name: n_papers
dtype: string
- name: pubmed_ids
dtype: string
- name: publication_years_all
dtype: string
- name: publication_year_min
dtype: string
- name: publication_year_max
dtype: string
- name: feature_relationship_types
dtype: string
- name: feature_relationship_summary
dtype: string
- name: has_mutation_relationship
dtype: string
- name: has_ptm_relationship
dtype: string
- name: has_binding_site_relationship
dtype: string
- name: partner_A_wildtype_sequence_if_feature_modified
dtype: string
- name: partner_B_wildtype_sequence_if_feature_modified
dtype: string
- name: wildtype_seq_sort_if_feature_modified
dtype: string
- name: wildtype_SNOOPPI_final_label
dtype: string
- name: wildtype_MI0915_final_label
dtype: string
- name: exact_sequence_pair_intact_label_summary
dtype: string
- name: snooppi_label_transition_from_intact
dtype: string
- name: seq_sort_origin_categories
dtype: string
- name: unique_expansions
dtype: string
- name: partner_A_go_terms
dtype: string
- name: partner_B_go_terms
dtype: string
- name: partner_A_dip
dtype: string
- name: partner_B_dip
dtype: string
- name: partner_A_ensg
dtype: string
- name: partner_B_ensg
dtype: string
- name: partner_A_ense
dtype: string
- name: partner_B_ense
dtype: string
- name: partner_A_enst
dtype: string
- name: partner_B_enst
dtype: string
- name: partner_A_interpro
dtype: string
- name: partner_B_interpro
dtype: string
- name: partner_A_rcsb_pdb
dtype: string
- name: partner_B_rcsb_pdb
dtype: string
- name: partner_A_reactome
dtype: string
- name: partner_B_reactome
dtype: string
- name: partner_A_host_context
dtype: string
- name: partner_B_host_context
dtype: string
- name: partner_A_sequence_snooppi_degree_by_label
dtype: string
- name: partner_B_sequence_snooppi_degree_by_label
dtype: string
- name: partner_A_sequence_modified_role_counts
dtype: string
- name: partner_B_sequence_modified_role_counts
dtype: string
- name: partner_A_sequence_partner_modified_role_counts
dtype: string
- name: partner_B_sequence_partner_modified_role_counts
dtype: string
- name: partner_A_gene_snooppi_degree_by_label
dtype: string
- name: partner_B_gene_snooppi_degree_by_label
dtype: string
- name: partner_A_gene_modified_role_counts
dtype: string
- name: partner_B_gene_modified_role_counts
dtype: string
- name: partner_A_gene_partner_modified_role_counts
dtype: string
- name: partner_B_gene_partner_modified_role_counts
dtype: string
splits:
- name: positive
num_bytes: 153392772
num_examples: 33625
- name: negative
num_bytes: 34725795
num_examples: 5378
- name: unknown
num_bytes: 4633269465
num_examples: 835083
download_size: 1457344515
dataset_size: 4821388032
SNOOPPI: Sequence-Normalized Database of On- and Off-Target Protein-Protein Interactions
SNOOPPI is a curated protein–protein interaction (PPI) dataset containing positive, negative, and unknown interaction annotations.
- SNOOPPI is sequence-indexed, meaning one unique SNOOPPI PPI or non-PPI indicates a unique combination of protein sequences.
- The dataset preserves protein sequences, identifiers, species information, PSI-MI interaction terms, experimental evidence, publications, and feature relationships where available.
Dataset splits
SNOOPPI is distributed in three splits:
| Split | Description |
|---|---|
positive |
Protein pairs retained as positive interactions under the SNOOPPI annotation criteria |
negative |
Protein pairs retained as negative interactions under the SNOOPPI annotation criteria |
unknown |
Protein pairs present in IntAct's source interaction records but not assigned a definitive positive or negative label under the SNOOPPI criteria |
The unknown split should not automatically be interpreted as a negative or as a set of experimentally tested non-interactions. These entries represent interactions for which the available evidence was insufficient, conflicting, or otherwise unresolved under the annotation framework.
Installation
Install the Hugging Face datasets package:
pip install -U datasets
Load the complete dataset
from datasets import load_dataset
snooppi = load_dataset("ChatterjeeLab/SNOOPPI")
print(snooppi)
This returns a DatasetDict containing the positive, negative, and unknown splits.
Access an individual split from the resulting object:
snooppi_positive = snooppi["positive"]
snooppi_negative = snooppi["negative"]
snooppi_unknown = snooppi["unknown"]
Load one split directly
Load only the positive interactions:
from datasets import load_dataset
snooppi_positive = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="positive",
)
Load only the negative interactions:
snooppi_negative = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="negative",
)
Load only the unknown interactions:
snooppi_unknown = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="unknown",
)
Convert a split to pandas
from datasets import load_dataset
snooppi_pos = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="positive",
).to_pandas()
Converting a complete split to pandas loads that split into memory. Users working in memory-constrained environments may prefer to filter the Hugging Face Dataset before calling .to_pandas().
Example queries
Retrieve direct human positive interactions
The PSI-MI term MI:0407 denotes a direct interaction. The NCBI taxonomy identifier for humans is 9606.
from datasets import load_dataset
snooppi_pos = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="positive",
).to_pandas()
direct_human_positive = snooppi_pos.loc[
snooppi_pos[
"unique_interaction_mi_terms"
].fillna("").str.contains(
"MI:0407",
regex=False,
)
& snooppi_pos[
"partner_A_species"
].fillna("").str.contains(
"9606",
regex=False,
)
& snooppi_pos[
"partner_B_species"
].fillna("").str.contains(
"9606",
regex=False,
)
].copy()
print(
f"Direct human positive interactions: "
f"{len(direct_human_positive):,}"
)
Find all positive interactions involving a UniProt accession
from datasets import load_dataset
snooppi_pos = load_dataset(
"ChatterjeeLab/SNOOPPI",
split="positive",
).to_pandas()
uniprot_accession = "P00734"
uniprot_ppis = snooppi_pos.loc[
snooppi_pos[
"partner_A_uniprot_ids"
].fillna("").str.contains(
uniprot_accession,
regex=False,
)
| snooppi_pos[
"partner_B_uniprot_ids"
].fillna("").str.contains(
uniprot_accession,
regex=False,
)
].copy()
print(
f"Positive interactions involving {uniprot_accession}: "
f"{len(uniprot_ppis):,}"
)
Notes on identifier searches
Identifier fields may contain multiple source identifiers or annotations within one string. The examples therefore use literal substring matching with regex=False.
For analyses requiring exact identifier membership, users should parse the relevant identifier field according to its delimiter structure before testing membership.
Intended use
SNOOPPI may support:
- Evaluation of protein–protein interaction prediction methods
- Analysis of positive and negative interaction evidence
- Study of sequence and feature relationships between interacting proteins
- Retrieval of interactions by UniProt accession, species, or PSI-MI term
Users should preserve the distinction among positive, negative, and unknown annotations when constructing evaluation or training datasets.
Citation
If you find SNOOPPI useful in your work, please consider citing our paper.
@article{10.1093/bioinformatics/btag736,
author = {Vincoff, Sophia and Chatterjee, Pranam},
title = {SNOOPPI: a sequence-normalized database of on- and off-target protein–protein interactions},
journal = {Bioinformatics},
volume = {42},
number = {10},
pages = {btag736},
year = {2026},
month = {10},
issn = {1367-4811},
doi = {10.1093/bioinformatics/btag736},
url = {https://doi.org/10.1093/bioinformatics/btag736},
eprint = {https://academic.oup.com/bioinformatics/article-pdf/42/10/btag736/71611875/btag736.pdf},
}