Mulah's picture
Add training splits, clustering and supplementary data
25a2abd verified
|
Raw History Blame Contribute Delete
5.47 kB

Data availability — ProtTale

Training data, dataset splits and the clusterings that define them. Together with the code, these files reproduce ProtTale from scratch: Stage 1 alignment, Stage 2 generation, the reliability head, and the held-out benchmark.

Figure and table source data are in the sibling Supplementary_Data folder.

Data_availability/
  stage1_pairs/        Stage 1, functionally similar protein pairs
  stage2_swissprot/    Stage 2, proteins paired with curated function text
  clustering/          the clustering that defines every split

All .json files are JSON Lines: one JSON record per line, not a single JSON array. Read them line by line.


stage1_pairs/ — pairwise functional alignment

Protein pairs labelled by MIPS clustering, used to train the Q-Former and shift the sequence pathway into the text-derived functional space.

File Records
train_set.json 119,546
valid_set.json 388
test_set.json 534

Each record is a 5-element list:

Position Content
0 Amino acid sequence of protein A
1 Amino acid sequence of protein B
2 Curated Swiss-Prot FUNCTION description of protein A
3 Curated Swiss-Prot FUNCTION description of protein B
4 MIPS label as a string, "1" if both proteins fall in the same MIPS cluster (functionally similar), "0" otherwise

Positives and negatives are balanced by construction in every split: 267 / 267 in the test set, 194 / 194 in the validation set, and equal counts in training.

Pairs were drawn independently within each split, so no pair crosses a split boundary. The pairing is derived without curation; the two descriptions attached to each pair are curated Swiss-Prot text.

The 534 test pairs are also the pairs used to validate the LLM-as-judge. That analysis, with UniProt identifiers and judge labels attached, is Supplementary_Data_3_stage1_test_pairs.csv.


stage2_swissprot/ — sequence to function text

Swiss-Prot proteins paired with their curated FUNCTION descriptions. The source was the full Swiss-Prot database, 574,627 entries, of which 473,996 carry a curated FUNCTION description.

File Records Role
train_set.json 207,197 Trains the generator
valid_set.json 1,000 Tunes the generator; its judge labels train the reliability head
test_set.json 1,000 Tunes the reliability head
unseen_set.json 1,031 Held-out benchmark, all final reporting

Each record is a 6-element list:

Position Content
0 Amino acid sequence
1 Curated Swiss-Prot FUNCTION description, the generation target
2 LLM-as-judge label for ProtTale's own prediction, scored 1 = Yes, 0 = No, 0.5 = Maybe, -1 = Vague. This is the reliability head's training target. Set to -1 throughout unseen_set.json, where it is a placeholder rather than a label
3 Experimentally validated Molecular Function GO terms
4 Enzyme Commission numbers
5 Placeholder, not used

In valid_set.json the judge labels split 328 Yes, 510 No, 90 Maybe and 72 Vague, which is the class balance the reliability head is fitted against.

Validation and test proteins are the CD-HIT representatives of their 40% identity clusters, one per cluster.

Every protein in unseen_set.json is a post-2022 Swiss-Prot deposition and comes from a different 40% identity cluster, one protein per cluster, none of whose members appears in training, validation or testing. Because the protein was chosen by deposition date and annotation rather than by length, it is not always the cluster's CD-HIT representative (683 of the 1,031 are). Each carries at least one experimentally validated MF GO term and at least one EC number, and does not appear in the released training data of any baseline method compared in the paper. The EC requirement means the benchmark consists entirely of enzymes.


clustering/ — how the splits were defined

File Content
swissprot_cdhit_40.clstr CD-HIT output at 40% sequence identity over Swiss-Prot, 93,610 clusters covering 573,398 sequences

CD-HIT clusters define the splits. Train, validation, test and unseen are partitioned at the level of these clusters, so no protein in one split shares a 40% identity cluster with a protein in another, and each unseen protein comes from a cluster none of whose members the model saw. The split files themselves carry sequences rather than cluster assignments, so this file is what makes that separation checkable: map the sequences of any two splits back to their clusters and confirm the clusters do not intersect.

MIPS clusters define the Stage 1 labels. They were built by Louvain community detection over a 5.5 billion edge similarity network spanning 5.2 million UniRef90 representatives, yielding about 1.2 million communities. A Swiss-Prot protein inherits the MIPS cluster of its UniRef90 representative; proteins longer than 1,200 residues, and those whose UniRef90 cluster has fewer than 10 members, have no MIPS cluster and contribute no Stage 1 pairs. The resulting same-cluster / different-cluster label is recorded per pair in stage1_pairs/, position 4 of each record.


Reproducing the paper's counts

The record counts above are the dataset sizes reported in the main text: 119,546 / 388 / 534 Stage 1 pairs and 207,197 / 1,000 / 1,000 / 1,031 Stage 2 proteins.