# 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.