Paper deep dive
QLoRA Fine-Tuning of Ministral LLM for Sequence-to-Function Protein Annotation
Demian Pavlyshenko, Bohdan Pavlyshenko
Intelligence
Status: not_run | Model: - | Prompt: - | Confidence: 0%
Entities (0)
Relation Signals (0)
No relation signals yet.
Cypher Suggestions (0)
No Cypher suggestions yet.
Abstract
Abstract:Functional annotation of newly sequenced proteins remains a bottleneck in molecular biology: the number of sequences in public repositories grows far faster than the capacity for manual curation. Most computational approaches consider annotation as multi-label classification over a fixed ontology, which constrains predictions to a predefined label set. In this work we study the the protein annotation as a sequence-to-text generation problem. We fine-tune the 3B-parameter Ministral 3 base model with QLoRA (4-bit NF4 quantization with low-rank adapters) on sequence annotation pairs. We assess predictions with an LLM-as-expert protocol: a GPT model prompted as a senior molecular-biology curator scores organism identification as binary and function annotation quality. We conclude that QLoRA-fine-tuned compact LLMs can generate curator-style annotations with genuine biological value for a substantial subset of proteins. We also discuss future directions in data quality, model scaling, and evidence grounding that are needed to make the approach sufficiently reliable for practical use.
Tags
Links
- Source: https://arxiv.org/abs/2609.24538v1
- Canonical: https://arxiv.org/abs/2609.24538v1
Trouble viewing inline? Open PDF directly â
Full Text
83,312 characters extracted from source content.
Expand or collapse full text
QLoRA Fine-Tuning of Ministral LLM for Sequence-to-Function Protein Annotation Demian Pavlyshenko demkolviv@gmail.com Bohdan Pavlyshenko b.pavlyshenko@gmail.com Abstract Functional annotation of newly sequenced proteins remains a bottleneck in molecular biology: the number of sequences in public repositories grows far faster than the capacity for manual curation. Most computational approaches consider annotation as multi-label classification over a fixed ontology, which constrains predictions to a predefined label set. In this work we study the the protein annotation as a sequence-to-text generation problem. We fine-tune the 3B-parameter Ministral 3 base model with QLoRA (4-bit NF4 quantization with low-rank adapters) on sequence annotation pairs. We assess predictions with an LLM-as-expert protocol: a GPT model prompted as a senior molecular-biology curator scores organism identification as binary and function annotation quality. We conclude that QLoRA-fine-tuned compact LLMs can generate curator-style annotations with genuine biological value for a substantial subset of proteins. We also discuss future directions in data quality, model scaling, and evidence grounding that are needed to make the approach sufficiently reliable for practical use. Keywords: protein function prediction; protein annotation; large language models; Ministral; Mistral; QLoRA; parameter-efficient fine-tuning; 4-bit quantization; UniProtKB/Swiss-Prot; LLM-as-expert; sequence-to-text generation; bioinformatics. Contents 1 Introduction2 2 Related Work3 2.1 Protein language models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 From labels to text: LLMs for protein annotation . . . . . . . . . . . . . . . . . . 3 2.3 The Mistral and Ministral model families . . . . . . . . . . . . . . . . . . . . . . 4 2.4 Parameter-efficient fine-tuning and 4-bit quantization . . . . . . . . . . . . . . . . 4 2.5 Our previous work on fine-tuned Mistral models . . . . . . . . . . . . . . . . . . 4 2.6 LLM-based evaluation of generated text . . . . . . . . . . . . . . . . . . . . . . . 4 3 Dataset Construction5 3.1 Retrieval from UniProtKB/Swiss-Prot . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 Filtering and construction of targets . . . . . . . . . . . . . . . . . . . . . . . . . 5 4 Methodology6 4.1 Base model and quantization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 4.2 Sequence representation and prompt format . . . . . . . . . . . . . . . . . . . . . 6 4.3 QLoRA configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.4 Training setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.5 Inference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 4.6 Expert-LLM evaluation protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1 arXiv:2609.24538v1 [cs.CL] 21 Sep 2026 5 Results and Discussion8 5.1 Training dynamics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5.2 Quantitative evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.3 Qualitative analysis of high-scoring predictions . . . . . . . . . . . . . . . . . . . 10 5.4 Error analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 5.5 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 6 Conclusion12 A Appendix17 A.1 Dataset Retrieval and Preprocessing . . . . . . . . . . . . . . . . . . . . . . . . . 17 A.2 Training Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 A.3 Expert Evaluation Prompt and Pipeline . . . . . . . . . . . . . . . . . . . . . . . 21 A.4 Graded Prediction Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 Introduction The gap between the number of known protein sequences and the number of experimentally characterised proteins continues to widen. UniProtKB contains hundreds of millions of entries, of which only a small, manually reviewed fractionâthe Swiss-Prot sectionâcarries curated functional descriptions written and evidence-tagged by expert biocurators [1]. Manual curation is accurate but expensive and inherently unable to keep pace with high-throughput sequencing, so the overwhelming majority of protein records rely on automatic annotation transferred from homologs. Improving automated functional annotation therefore remains one of the practically important problems of computational biology. The dominant computational formulation treats annotation as multi-label classification over a controlled vocabulary, most often the Gene Ontology. Homology-transfer baselines such as BLAST [2] and machine-learning systems such as DeepGOPlus [3] assign GO terms to sequences, and the CAFA challenges have established a standard evaluation methodology for this setting [4]. This formulation has two limitations that motivate the present work. First, the prediction space is closed: a classifier can only emit terms it was trained on, and cannot express a functional nuance for which no term exists. Second, the output is a set of identifiers rather than a description; the specific substrate, the interacting partner, the direction of a regulatory effect or the physiological contextâthe content that makes a Swiss-ProtFUNCTIONcomment useful to a biologistâis either flattened into generic terms or lost entirely. An alternative is to treat annotation as conditional text generation: given the amino-acid sequence, generate the free-text functional description directly. This formulation is open-ended, produces curator-style prose, and can be evaluated against the reference annotation by biological meaning rather than by label overlap. Recent multimodal systems such as Prot2Text [5] and Prot2Text-V2 [6] demonstrate that the formulation is viable, typically by coupling a protein encoder (and, in the multimodal case, structural information) to a text decoder. A natural questionâand the one we address hereâis how much of this capability can be obtained from a general purpose, compact, openly available language model that receives nothing but the raw amino-acid sequence as text, adapted with parameter-efficient fine-tuning on commodity hardware. This work makes the following contributions. âąWe fine-tune the compact Ministral 3 3B base model [7] with QLoRA [8] to generate, from a spaced amino-acid sequence, the source organism and a UniProt-styleFUNCTIONdescription as a single JSON object (Section 4). The full run fits on one 80 GB GPU and trains 135M adapter parameters, 3.39% of the model. 2 âąWe propose and apply an expert-LLM evaluation protocol in which a GPT model prompted as a senior molecular biologist scores organism identification (binary) and functional quality (0â10) under an explicit rubric with structured-output decoding (Section 4.6). âąWe report quantitative results, training dynamics, worked examples and an error analysis on held-out proteins, and discuss the strengths and the limitationsâin particular hallucination riskâof sequence-only generative annotation (Section 5). All code excerpts required to reproduce the pipelineâdataset retrieval, training configuration, generation and evaluationâare given in the appendices. 2 Related Work 2.1 Protein language models Self-supervised models trained on large protein-sequence corpora learn representations that capture structural and functional signal without explicit supervision. The ESM family established the paradigm at scale: ESM-1b showed that biological structure and function emerge from masked-language-model pretraining on 250 million sequences [9], and ESM-2 extended this to atomic-level structure prediction directly from a language model [10]. ProtTrans systematically compared transformer architectures, including ProtT5, trained on billions of protein tokens and showed that the resulting embeddings are competitive with alignment-based features for per-residue and per-protein tasks [11]. Generative protein language models such as ProGen [12] and ProtGPT2 [13] model the sequence distribution itself and can generate functional artificial proteins. These models treat amino-acid sequences as the language to be modelled; the natural-language description of function is external to them, and mapping embeddings to human-readable annotation requires an additional supervised component. 2.2 From labels to text: LLMs for protein annotation A growing body of work uses large language models to produce natural-language descriptions of protein function rather than ontology labels. Prot2Text [5] was among the first to frame protein-function prediction as free-text generation, combining a graph neural network over the protein structure with a transformer decoder to generate Swiss-Prot-style descriptions. Prot2Text-V2 [6] extends this line with a multimodal contrastive alignment strategy: a protein encoder and a large instruction-tuned language decoder are aligned so that sequence (and structure-derived) representations are projected into the decoderâs embedding space, improving the biological faithfulness of generated descriptions; the 11B instruction-tuned checkpoint is publicly distributed [14]. Our setting is deliberately more austere: we use no structural input, no protein encoder and no contrastive alignment stage; the amino-acid sequence is presented to a general purpose LLM as plain text, which isolates the contribution of instruction fine-tuning itself and keeps the pipeline reproducible on a single GPU. ProLLaMA [15] takes a complementary route, converting a general purpose LLaMA model into a multi-task protein language model through a two-stage training procedure: continued pretraining on protein sequences to teach the model "protein language", followed by instruction tuning that lets a single model handle both controllable protein generation and protein-property prediction, with low-rank adaptation used to keep training tractable; code and models are publicly available [16]. ProLLaMA supports our central premiseâthat a general-purpose decoder-only LLM can be adapted to protein tasks with parameter-efficient methodsâwhile differing in objective: ProLLaMA focuses on superfamily-conditioned sequence generation and property prediction, whereas we target free-text curator-style functional annotation together with organism identification. 3 2.3 The Mistral and Ministral model families Mistral 7B [17] demonstrated that carefully trained compact open-weight models can match or exceed considerably larger models, using grouped query attention and sliding-window attention for efficient inference; Mixtral [18] extended the family with sparse mixture-of-experts routing. The Ministral line targets the low-parameter, on-device regime: the "Les Ministraux" models (3B and 8B) were introduced as efficient edge models with strong knowledge and reasoning performance for their size [19]. In this work we use the Ministral 3 3B base checkpoint Ministral-3-3B-Base-2512[7], a compact decoder that loads in under 3 GB of GPU memory in 4-bit precision, together with themistral-commontokenization and prompt-validation library [20]. A base (non-instruction-tuned) checkpoint is a deliberate choice: the target behaviour is a narrow, highly formatted annotation task, and supervised fine-tuning defines the response format without competing with prior instruction tuning. 2.4 Parameter-efficient fine-tuning and 4-bit quantization Low-Rank Adaptation (LoRA) is a parameter-efficient fine-tuning method for large language models [21] that freezes pretrained weights and injects trainable low-rank matrices into linear layers, so that for W 0 âR dĂk the adapted transform is W 0 x + âWx = W 0 x + α r BAx, B âR dĂr , AâR rĂk , r âȘ min(d,k),(1) reducing the number of trainable parameters by orders of magnitude while matching full fine- tuning quality on many tasks. QLoRA [8] makes this practical for consumer and single-GPU settings by back-propagating through a frozen base model quantized to 4-bit NormalFloat (NF4), a data type information-theoretically suited to normally distributed weights, combined with double quantization (quantizing the quantization constants themselves) and paged optimizers that use NVIDIA unified memory to survive gradient-checkpointing memory spikes. Together with block-wise 8-bit optimizer states [22], these techniques reduce the memory footprint of fine-tuning a multi-billion-parameter model to a single commodity GPU. Our implementation uses the Hugging Face Transformers [23] and PEFT [24] libraries. 2.5 Our previous work on fine-tuned Mistral models The present study continues a line of work on fine-tuning large language models for domain-specific text analytics. In [25], a Llama-family LLM was fine-tuned for the analysis of disinformation and fake news, showing that a fine-tuned model can perform several analytic subtasksâfake- news detection, extraction of named entities, and generation of structured analytic summaries â within a single generative interface, and that supervised fine-tuning on a modest domain corpus substantially outperforms prompting alone. In [26], a fine-tuned Mistral model was combined with a retrieval-augmented generation (RAG) pipeline for multilevel analysis of cryptocurrency news, producing structured, multi-level analytic outputs (entity and event extraction, sentiment and risk assessment, and higher-level summaries) grounded in retrieved documents. Both studies use the same methodological ingredients we apply here â parameter-efficient fine-tuning of a compact open-weight Mistral model, supervision by structured target texts, and evaluation of generated free-text output. 2.6 LLM-based evaluation of generated text Evaluating generated annotations is itself a research problem.n-gram overlap metrics such as BLEU [27] and ROUGE [28] reward surface similarity and are weakly correlated with biological correctness: a prediction can paraphrase the reference perfectly and still name the wrong substrate, or use entirely different wording for the same enzymatic activity. Using strong LLMs 4 as graders has been shown to correlate well with human judgment for open-ended generation, both in the pairwise/absolute-score setting of MT-Bench [29] and in the rubric-driven G-Eval framework [30]. We adopt this methodology with a domain-specific rubric (Section 4.6), which lets us separate organism identification from functional correctness and to score partial biological credit explicitly. 3 Dataset Construction 3.1 Retrieval from UniProtKB/Swiss-Prot We constructed a protein sequence-to-function dataset from reviewed UniProtKB/Swiss-Prot entries [1] retrieved through the UniProt REST API [31]. Entries were selected with the query reviewed:true AND length:[50 TO 1024] and requested in TSV format with the fieldsaccession,protein_name,organism_name,length, sequence,c_function,c_subcellular_location,c_pathway,ec, the three Gene Ontology aspects (go_f,go_p,go_c) andxref_interpro. Results were paginated through the APIâs Linkheader in batches of 500 entries. Thereviewed:truefilter restricts the corpus to manually curated entries, so that every supervision target is a human-written functional description rather than an automatically propagated one; the length window excludes peptides too short to carry a reliable functional signal and sequences too long to fit the training context economically. Protein sequences serve as model inputs and the curatedcc_functioncomments serve as natural-language supervision targets. The download code is given in Appendix A.1, Listing 3. 3.2 Filtering and construction of targets For the experiments reported here we retrieved 350,000 entries and applied the following selection steps. 1. Organism coverage. We kept only entries whose organism occurs at least 500 times in the downloaded corpus. This yields 34 organisms and makes the organism-identification part of the task learnable: species that appear a handful of times cannot be inferred reliably from sequence alone, and their presence would add label noise without adding signal. 2.Length constraints. We kept entries with sequence lengthâ€700 residues and functional- comment lengthâ€850 characters. The thresholds were chosen from the empirical quantiles of the two length distributions so as to retain the large majority of entries while bounding the token budget of both the prompt and the target. 3. Target assembly. The supervision target concatenates the organism name and the curated functional comment, target = Organism + "; " + Function [C] so that a single generated string carries both predictions and can be split deterministically at the first semicolon at evaluation time. An example target is: Oryctolagus cuniculus (Rabbit); FUNCTION: ATP-dependent RNA helicase which is a subunit of the eIF4F complex involved in cap recognition and is required for mRNA binding to ribosome. ... After these steps the dataset comprises 72,873 sequenceâfunction pairs. Immediately before training, three additional cleaning rules are applied inside the training notebook: duplicate sequences are removed, sequences containing non-standard amino-acid symbols (anything outside 5 the 20-letter alphabetACDEFGHIKLMNPQRSTVWY) are discarded, and entries whose functional comment matchesuncharacterizedorfunction unknownare excluded, since such targets provide no biological supervision and teach the model to produce evasive annotations. The resulting corpus was split randomly into a training set and a held-out test set with test fraction 0.03. 4 Methodology 4.1 Base model and quantization The base model is the Ministral 3 3B base checkpointmistralai/Ministral-3-3B-Base-2512 [7], loaded with 4-bit NF4 quantization and double quantization following QLoRA [8], with bfloat16 as the compute dtype: load_in_4bit=True, bnb_4bit_quant_type="nf4", bnb_4bit_use_double_quant=True, bnb_4bit_compute_dtype=torch.bfloat16. In this configuration the frozen base weights occupy approximately 2.6 GB of GPU memory. Tokenization uses the modelâs native Tekken tokenizer through themistral-commonbackend [20], which also renders the instruction template. 4.2 Sequence representation and prompt format Amino-acid sequences are presented to the model as plain text, with a single space inserted between consecutive residues ("M K A V S P ..."). This whitespace separation prevents the subword tokenizer from merging residues into arbitrary multi-character tokens that vary with local context: spacing makes the mapping from residues to tokens essentially one-to-one and position-stable, at the cost of a longer prompt. The sequence is wrapped in<protein>tags inside an instruction that fixes the task and the output format, and the whole is rendered through the Mistral chat template, giving prompts of the form <s>[INST]...[/INST]: <s>[INST]You are a protein-function annotation assistant. Infer only what is supported by the amino-acid sequence. Return concise valid JSON with one key: "function". Protein sequence: <protein> S R D N G P D G M E P E G V I E S N W N E I V D S F D D M N L S E S L L R G I Y A Y G F E K ... </protein> [/INST] Listing 1: Instruction prompt used for fine-tuning and inference (the model continues after [/INST]). The training target is the reference annotation serialised as a one-key JSON object, terminated by the end-of-sequence token: "function": "Oryctolagus cuniculus (Rabbit); FUNCTION: ATP-dependent RNA helicase which is a subunit of the eIF4F complex involved in cap recognition and is required for mRNA binding to ribosome. ..."</s> Listing 2: Training target: organism and curated FUNCTION comment inside a JSON envelope. The JSON envelope makes the output machine-parseable and gives the model an unambiguous stopping condition; the organism prefix before the first semicolon makes taxonomic prediction an explicit, separately scorable part of the task. Sequences are built by concatenating the tokenized prompt with the tokenized target rather than by rendering a two-turn conversation. This is both a correctness and a practical decision: it 6 guarantees that the prompt tokens are an exact prefix of the training sequence â which the loss mask relies on â and it avoids the serving-mode validation inmistral-common, which requires the last message of a conversation to come from the user. Loss is computed only over the answer tokens: label positions corresponding to the prompt are set toâ100 (the ignore index), so the model is never trained to reproduce the instruction or the amino-acid sequence. Examples are truncated to 1,536 tokens. Listing 6 in Appendix A.2 gives the implementation. 4.3 QLoRA configuration Low-rank adapters (Equation 1) are injected into all seven projection matrices of every trans- former block â the attention projectionsq_proj,k_proj,v_proj,o_projand the feed-forward projectionsgate_proj,up_proj,down_projâ with rankr= 64, scalingα= 128 (soα/r= 2) and adapter dropout 0.05; no bias terms are trained. This yields 135,004,160 trainable parameters out of 3,984,094,208, i.e. 3.39% of the model. Before adapter injection the quantized model is prepared fork-bit training (input embeddings cast appropriately, layer norms kept in higher precision, gradient checkpointing enabled with non-reentrant checkpointing). 4.4 Training setup Training ran for 3 epochs on a single NVIDIA A100-SXM4-80GB GPU with bfloat16 compute, a per-device batch of 16 and 2 gradient-accumulation steps (effective batch 32), for a total of 6,336 optimizer steps. We used a learning rate of 1Ă10 â4 with a cosine schedule and 1% warmup, the paged 8-bit AdamW optimizer [22,8], gradient checkpointing, and length-grouped batching so that sequences of similar length are batched together and padding overhead is reduced. Batches are padded to a multiple of eight tokens with the EOS token, padding positions are masked out of both the attention mask and the loss. Validation loss was computed every 300 steps on a fixed 300-example subset of the held-out split, and checkpoints were written to persistent storage at the same interval so that an interrupted session could be resumed. The complete configuration is listed in Table 1 and in Appendix A.2, Listing 7. Table 1: Model, QLoRA and optimization hyperparameters. SettingValue Base model mistralai/Ministral-3-3B-Base-2512 Total / trainable parameters3,984,094,208 / 135,004,160 (3.39%) Quantization4-bit NF4, double quantization, bfloat16 compute LoRA rank r / α / dropout64 / 128 / 0.05 LoRA target modulesq,k,v,o_proj; gate,up,down_proj Max sequence length1,536 tokens Epochs / optimizer steps3 / 6,336 Batch size (device Ă accumulation)16Ă 2 = 32 Learning rate / schedule / warmup1Ă 10 â4 / cosine / 1% Optimizerpaged AdamW, 8-bit states Precisionbf16 (TF32 matmul enabled) Gradient checkpointingenabled (non-reentrant) Batching strategygroup-by-length, pad to multiple of 8 Hardware / wall-clock time1 Ă A100-SXM4-80GB / 7.18 h Throughput7.84 samples/s 4.5 Inference At inference time the adapter is attached to the same 4-bit base model, ensuring that the frozen weights the adapter sees are bit-identical to those it was trained against. Annotations are produced by greedy decoding (do_sample=False), which is appropriate for an extraction-like 7 task where a single most-probable annotation is wanted rather than diversity. Prompts within a batch are left-padded so that every sequence ends exactly at the generation boundary, the key- value cache is re-enabled (it is disabled during gradient-checkpointed training), and generation stops at the EOS token that terminates the JSON object. We used a generation batch size of 16. 4.6 Expert-LLM evaluation protocol Because surface-overlap metrics do not measure biological correctness, we evaluate generated annotations with an LLM-as-expert protocol [29,30] implemented against the GPT API with the model gpt-5.6-terra. The evaluation pipeline proceeds as follows. 1.Parsing. Reference and prediction strings are split at the first semicolon into an organism part and a function part, theFUNCTION:prefix is stripped, and UniProt evidence tags (ECO:...,(PubMed:...),(By similarity)) are removed. Evidence tags are curation metadata; leaving them in would let the grader reward the imitation of citation formatting. 2.Grading prompt. The system prompt casts the model as a senior expert in molecular biology, biochemistry, enzymology and protein science familiar with Swiss-Prot curation practice, and defines three tasks: (A)organism_predicted â0,1, where 1 requires the same species â formatting, common names, synonyms and strain differences are ignored, while a different species, even a close relative, scores 0; (B)function_qualityâ0,...,10under an explicit rubric that weighs molecular function first, biological process second and specific details third, with anchors from 10 (biologically equivalent) to 0 (wrong, contradictory or empty); and (C)comments, a short expert remark on what the prediction got right or wrong. The rubric instructs the grader to ignore wording and citation style, not to reward length, to penalise unsupported added claims, to cap vague "may be involved in" predictions at 3, and to grade function independently of organism correctness. The full prompt is reproduced in Appendix A.3. 3.Structured decoding. The grader returns a schema-constrained object with a free-text rationale preceding each score [32], so that scores are always integers in the admissible range and the rationale is available for audit. Requiring the rationale before the score follows the chain-of-thought-style evaluation used in G-Eval [30]. 4.Execution. Requests run in parallel with retry and back-off, and every graded row is appended to a cache file, so an interrupted evaluation resumes without re-grading. Results are written as a CSV with the columnsreference,prediction,organism_predicted, function_quality and comments. We report organism accuracy (the mean oforganism_predicted), the mean and median function-quality score, and the share of predictions scoringâ„7, which we treat as the threshold for an annotation that a curator could use as a starting point. 5 Results and Discussion 5.1 Training dynamics Figure 1a shows training and validation cross-entropy over the 6,336 optimizer steps. Both curves decrease monotonically, from 1.004/0.997 (training/validation) at step 300 to 0.290/0.470 at the end of training; the overall training loss averaged over the run is 0.536. The characteristic step- shaped drops at the epoch boundaries (steps 2,112 and 4,224) reflect the model re-encountering training examples, and the widening gap between the two curves in the third epoch â validation loss flattens atâ0.470 while training loss continues to fall toâ0.290 â indicates the onset of memorisation. Validation loss does not increase, so the run was not stopped early, but the 8 flattening suggests that further epochs on this dataset would mostly increase the trainâvalidation gap; additional data, rather than additional epochs, is the direction with headroom. Figure 1b shows expert function-quality scores. 0100020003000400050006000 Optimizer step 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 Cross-entropy loss epoch 2 epoch 3 Training loss Validation loss (a) Training and validation loss. 012345678910 Expert function-quality score (010) 0 10 20 30 40 Share of test proteins (%) n = 1444 test proteins (b) Expert function-quality scores; green bars mark usable annotations (scoreâ„7). Figure 1: Training dynamics (left) and the distribution of expert scores on the held-out test proteins (right). 5.2 Quantitative evaluation We generated annotations for 1,444 held-out test proteins and graded each one with the protocol of Section 4.6. The headline results are summarised in Table 2: the fine-tuned model identifies the source organism correctly for 40.4% of test proteins, and its functional annotations receive a mean expert score of 2.72/10. Table 2: Expert-LLM evaluation of the fine-tuned Ministral 3 3B model on 1,444 held-out test proteins. Graded by gpt-5.6-terra under the rubric of Appendix A.3. MetricValue Organism accuracy (organism_predicted = 1)40.4% Function quality, mean2.72 / 10 Function quality, median1.0 Function quality â„ 7 (usable annotation)19.9% Function quality â„ 817.7% Function quality = 10 (biologically equivalent)12.7% Function quality †156.6% Organism correct and function quality â„ 78.7% Two modes dominate: 42.6% of predictions receive a score of 0 and 12.7% receive a full 10, with comparatively few predictions in the middle of the scale (scores 4â6 together account for only 6.9%). In other words, the model does not usually produce mediocre approximations of the correct annotation; it either recovers the curated function almost exactly or produces a fluent annotation for a different protein. This is consistent with a retrieval-like behaviour induced by fine-tuning: when the test sequence is close to something the model has seen, it reproduces the corresponding curated description with high fidelity; otherwise it falls back on a plausible but unsupported annotation. Organism prediction and function quality are only weakly coupled. Among predictions that score 10 on function, the organism is correct in just 50.0% of cases, against 34.5% among those scoring 0; mean function quality is 2.96 when the organism is correct and 2.56 when it is not. The joint success rate â correct organism and function scoreâ„7 â is 8.7%. The frequent 9 combination of a perfect functional description with the wrong species is instructive: highly conserved proteins have near-identical curated annotations across organisms, so the model can reproduce the functional text from a homolog while assigning it to the species that dominates the training data for that protein family. Example 1 in Appendix A.4 is exactly this case: the pig cornified envelope protein is annotated with the correct function verbatim but assigned to human. 5.3 Qualitative analysis of high-scoring predictions Appendix A.4 reproduces the graded examples for the two upper score bands. The score-10 cases (Appendix A.4.1) share a clear profile: the predicted text reproduces the molecular activity, the biological process and the specific details of the curated comment â for example a RAB5- specific GTPase activating protein that explicitly excludes activity on RAB4 and RAB11, or an SSU-processome component described with its correct ribosome-biogenesis context â so that only the wording, and frequently the organism, differs from the reference. These are cases in which sequence-only annotation genuinely works: the model has internalised a family-to-function mapping precise enough to reconstruct curator-level detail. A recurring defect is nevertheless visible even in this best band: the evidence tags that the model reproduces alongside the annotation text are almost never the reference ones. UniProt terminates aFUNCTIONcomment with machine-readable provenance such asECO:0000269| PubMed:12214233 , where the ECO code states the type of evidence and the PubMed identifier points to the publication supporting the statement. Having been trained on targets that end with such tags, the model emits them as part of the expected output format: 87.0% of predictions carry an ECO tag, matching the 88.2% of references that do, and 31.3% cite at least one PubMed identifier. Those identifiers, however, are essentially never the correct ones â of the predictions that cite literature, 96.9% cite at least one PubMed identifier absent from the reference annotation, and only 3.5% share any identifier with it. The defect is independent of functional accuracy: among score-10 predictions that carry citations, 80.0% still cite at least one identifier that the reference does not. In the worked examples this is visible throughout Appendix A.4.1: seven of the ten score-10 predictions attach evidence tags that differ from the reference, for instance a reference supported byECO:0000269|PubMed:12214233against a prediction claiming inference by similarity, or a prediction citing three PubMed identifiers none of which appears in the curated entry. The explanation is structural: PubMed identifiers are arbitrary integers with no relation to the amino-acid sequence, so they cannot be inferred from the input at all; the model reproduces the shape of a citation, which is precisely the definition of a fabricated reference. Our grading rubric instructs the expert model to ignore evidence tags, so this defect does not affect the reported scores â but it must be stripped before any downstream use, and it is a reminder that fluent formatting is generated independently of factual grounding. The score-7 cases (Appendix A.4.2) are equally informative because they expose the charac- teristic partial-credit failure modes: (i) correct family, missing specifics â a metallothionein is correctly identified as a cysteine-rich heavy-metal binder, but the prediction omits the Cu/Zn chelation and the role in copper remobilisation during leaf senescence and seed development; (i) correct molecular identity, generic biology â a Frizzled-family ligand is recognised, but the kidney-specific pronephric developmental role and its Notch-pathway context are replaced by generic developmental language; and (i) correct core function with an unsupported addition, where the model adds a specific claim (for instance that a Complex I subunit is essential for complex assembly) that the curated entry does not support. The third mode is the most dangerous in practice, since fluent, specific and false statements are exactly what an annotation consumer is least able to detect. 10 5.4 Error analysis Inspecting the graded rationales for low-scoring predictions reveals four recurring error types. âąConfident misassignment (dominant). The prediction is a well-formed, internally consistent annotation for a different protein family. As one grader comment puts it: "Both the species and protein assignment are incorrect. The predicted synaptotagmin-like calcium sensor is unrelated to the reference CDKN1B Thr-187 phosphatase." The output looks exactly like a good annotation and can only be recognised as wrong by a domain expert or an independent method. âąUnsupported specificity. The core function is right but the model adds substrate, partner or mechanism details that the curated entry does not contain â a direct consequence of training on rich, specific targets: the model learns that annotations sound specific and supplies specificity whether or not the sequence justifies it. âą Generic under-specification. Vague predictions ("May be involved in the regulation of cell proliferation") that the rubric caps at a low score. These are the modelâs fallback when no strong family signal is detected, and they are the least harmful failure mode. âąOrganism bias. Errors skew towards the organisms best represented in the training corpus, human above all; the model uses the taxonomic prior of its training distribution rather than species-specific sequence features. Predicted functional texts are also shorter than the curated references (median 143 vs. 220 characters), reflecting a bias towards the shorter, more generic portion of the annotation distribution. 5.5 Discussion What the results support. The central positive finding is that a 3B-parameter general- purpose model, given nothing but a spaced amino-acid string and adapted with 3.39% trainable parameters on a single GPU for about seven hours, produces annotations that a strict expert rubric judges biologically equivalent to Swiss-Prot curation for one prediction in eight, and usable for one in five. No protein encoder, no structural input, no multiple-sequence alignment and no ontology were involved. This is a strong statement about the efficiency of QLoRA adaptation: the combination of 4-bit NF4 quantization, low-rank adapters and paged 8-bit optimizers [8,22] moves a task that would otherwise require multi-GPU full fine-tuning into a setting reproducible by a single researcher, which matters for the reproducibility of domain-specific LLM research generally, as in our earlier applications to news analytics [25, 26]. Limitations of sequence-only annotation. The results equally delimit the approach. Protein function is determined by three-dimensional structure, binding interfaces and cellular context; a decoder-only LLM reading residues as text has access to none of these directly and must infer family membership from sequence patterns alone. Systems that inject structural or encoder-derived representations â Prot2Text [5], Prot2Text-V2 [6] â address precisely this gap, and the comparison suggests the natural next step for our pipeline is to condition on embeddings from a dedicated protein language model [10,11] or on domain signatures such as InterPro [33] rather than on raw residues. A second, methodological limitation is that our random split does not control for homology between training and test proteins: some part of the high-scoring tail reflects near-duplicate family coverage rather than generalisation to genuinely novel proteins, and a sequence-identity-clustered split would give a stricter estimate of generalisation. Hallucination risk. The failure profile described above is the principal obstacle to practical deployment. Unlike a classifier, which expresses uncertainty through low probabilities over a 11 known label set, a generative annotator expresses uncertainty by producing a confident annotation for a different protein. The model provides no calibrated signal distinguishing its score-10 from its score-0 outputs, and the fluency of the output is uncorrelated with its correctness. Any practical use therefore requires an external verification layer: agreement with homology search, consistency with domain signatures, self-consistency across sampled generations, or a curator in the loop. Generated annotations should be treated as curation drafts, never as evidence, and should never be deposited into a database without experimental or at least computational corroboration; propagating hallucinated annotations into public resources would degrade exactly the curated corpora such models are trained on. The fabricated evidence tags discussed above sharpen this point. The model reproduces UniProt provenance syntax â ECO evidence codes andPubMed:nnnnnnnnidentifiers â with the statistics of the training distribution (87.0% of predictions carry an ECO tag) while the identifiers themselves are almost always wrong (96.9% of citing predictions cite at least one identifier absent from the reference), including in predictions whose biology is judged perfect. This is the clearest available demonstration that surface form and factual grounding are generated by the same mechanism and therefore carry no mutual guarantee: a fabricated citation is easy to detect automatically, by checking the identifier against PubMed, whereas a fabricated substrate or interaction partner is not. Practically, evidence tags should be removed from the training targets altogether â so that the model is never taught to emit provenance it cannot possess â and re-attached, if at all, by an external retrieval step that links the generated statement to real literature. Applicability to uncharacterized proteins. The intended use case â proteins without curated annotation â is also where our evidence is weakest: we deliberately removed uncharacter- ized entries from training, and our test set consists of proteins that do have curated annotations. Since performance is driven by proximity to well-annotated families, performance on genuinely novel sequences is expected to be lower than the numbers reported here, and establishing it requires prospective evaluation against subsequently curated entries or experimental validation. On ablations. We report a single end-to-end configuration (r= 64,α= 128). A systematic ablation of the adapter rank (e.g.r= 32 vs.r= 64), ofα/r, of the set of adapted projections and of the sequence representation (spaced vs. unspaced residues) would isolate their individual contributions, but each variant requires a full training run plus a graded evaluation pass, which we leave to future work rather than report untested. We note only that the rank chosen here is at the upper end of typical QLoRA settings, consistent with the fact that the target task â mapping residue patterns to biological text â is further from the base modelâs pretraining distribution than a typical natural-language fine-tune. On the evaluation protocol. Grading with an LLM introduces its own uncertainty: the grader may be biased toward fluent text, may apply the rubric inconsistently across biological subdomains, and cannot verify claims against primary literature. We mitigate this with an explicit rubric, mandatory rationales, structured decoding and a deterministic split of the two subtasks, and we release the per-example rationales for audit. Validating the grader against expert human annotators on a sample remains necessary future work; the protocol should be read as a scalable proxy for expert review [29, 30], not as a replacement for it. 6 Conclusion We tested a QLoRA approach for fine-tuning a compact Ministral large language model for protein functional annotation, formulating the problem as sequence-to-text generation: the model reads a raw amino-acid sequence and writes the source organism together with a free-text, 12 curator-styleFUNCTIONdescription. For evaluation we used expert estimation performed by another large language model â a GPT API model prompted as a senior molecular biologist â which scores organism identification and functional correctness separately under an explicit rubric. The results show that for a substantial share of protein sequences the approach yields very good annotations and correct organism detection: 12.7% of held-out predictions were judged biologically equivalent to the curated Swiss-Prot annotation, 19.9% reached a usable quality level (scoreâ„7), and the source organism was identified correctly for 40.4% of proteins â using a 3B-parameter model adapted on a single GPU with 3.39% of its parameters trainable. The score distribution is bimodal: the model tends either to recover the curated function almost exactly or to produce a fluent annotation belonging to a different protein, which makes hallucination, rather than vagueness, the characteristic failure mode and mandates external verification before any practical use. The same mechanism produces fabricated provenance: the model reproduces the UniProt evidence-tag syntax of its training targets â ECO codes and PubMed identifiers such asECO:0000269|PubMed:12214233â but the cited identifiers are almost never those of the reference entry, and this holds even for annotations judged biologically equivalent to the curated text. Evidence tags should therefore be stripped from the supervision targets in future iterations, since literature provenance cannot be inferred from an amino-acid sequence and can only be supplied by an external retrieval step. It is expected that with larger training datasets, optimized QLoRA hyperparameters, or larger Mistral-family models, the obtained results can be essentially improved. Beyond scale, the most promising directions are to ground generation in additional evidence â structural information, embeddings from dedicated protein language models, or InterPro/Pfam domain signatures supplied in the prompt â to add calibrated confidence estimation so that unreliable annotations can be filtered automatically, to adopt homology-aware train/test splits for a stricter measure of generalisation, and to validate the LLM grader against human expert annotators. References [1] The UniProt Consortium. UniProt: the universal protein knowledgebase in 2025. Nucleic Acids Research, 53(D1):D609âD617, 2025. [2]Stephen F. Altschul, Warren Gish, Webb Miller, Eugene W. Myers, and David J. Lipman. Basic local alignment search tool. Journal of Molecular Biology, 215(3):403â410, 1990. [3]Maxat Kulmanov and Robert Hoehndorf. DeepGOPlus: improved protein function predic- tion from sequence. Bioinformatics, 36(2):422â429, 2020. [4] Naihui Zhou, Yuxiang Jiang, Timothy R. Bergquist, et al. The CAFA challenge reports improved protein function prediction and new functional annotations for hundreds of genes through experimental screens. Genome Biology, 20:244, 2019. [5] Hadi Abdine, Michail Chatzianastasis, Costas Bouyioukos, and Michalis Vazirgiannis. Prot2Text: Multimodal Proteinâs Function Generation with GNNs and Transformers. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 38, pages 10757â10765, 2024. [6] Xiao Fei, Michail Chatzianastasis, Sarah Almeida Carneiro, Hadi Abdine, Lawrence P. Petalidis, and Michalis Vazirgiannis. Prot2Text-V2: Protein Function Prediction with Multimodal Contrastive Alignment, 2025. [7]Mistral AI. Ministral-3-3B-Base-2512 model card.https://huggingface.co/mistralai/ Ministral-3-3B-Base-2512, 2025. Accessed 2026-09-20. 13 [8]Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, and Luke Zettlemoyer. QLoRA: Efficient Finetuning of Quantized LLMs. In Advances in Neural Information Processing Systems (NeurIPS), volume 36, 2023. [9]Alexander Rives, Joshua Meier, Tom Sercu, Siddharth Goyal, Zeming Lin, Jason Liu, Demi Guo, Myle Ott, C. Lawrence Zitnick, Jerry Ma, and Rob Fergus. Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences. Proceedings of the National Academy of Sciences, 118(15):e2016239118, 2021. [10]Zeming Lin, Halil Akin, Roshan Rao, Brian Hie, Zhongkai Zhu, Wenting Lu, Nikita Smetanin, Robert Verkuil, Ori Kabeli, Yaniv Shmueli, Allan dos Santos Costa, Maryam Fazel-Zarandi, Tom Sercu, Salvatore Candido, and Alexander Rives. Evolutionary-scale prediction of atomic-level protein structure with a language model. Science, 379(6637):1123â1130, 2023. [11]Ahmed Elnaggar, Michael Heinzinger, Christian Dallago, Ghalia Rehawi, Yu Wang, Llion Jones, Tom Gibbs, Tamas Feher, Christoph Angerer, Martin Steinegger, Debsindhu Bhowmik, and Burkhard Rost. ProtTrans: Toward Understanding the Language of Life Through Self-Supervised Learning. IEEE Transactions on Pattern Analysis and Machine Intelligence, 44(10):7112â7127, 2022. [12] Ali Madani, Ben Krause, Eric R. Greene, Subu Subramanian, Benjamin P. Mohr, James M. Holton, Jose Luis Olmos, Caiming Xiong, Zachary Z. Sun, Richard Socher, James S. Fraser, and Nikhil Naik. Large language models generate functional protein sequences across diverse families. Nature Biotechnology, 41:1099â1106, 2023. [13] Noelia Ferruz, Steffen Schmidt, and Birte Höcker. ProtGPT2 is a deep unsupervised language model for protein design. Nature Communications, 13:4348, 2022. [14] Xiao Fei, Michail Chatzianastasis, Sarah Almeida Carneiro, Hadi Abdine, Lawrence P. Petalidis, and Michalis Vazirgiannis. Prot2Text-V2-11B-Instruct-hf model card.https: //huggingface.co/xiao-fei/Prot2Text-V2-11B-Instruct-hf, 2025. Accessed 2026-09- 20. [15]Liuzhenghao Lv, Zongying Lin, Hao Li, Yuyang Liu, Jiaxi Cui, Calvin Yu-Chian Chen, Li Yuan, and Yonghong Tian. Prollama: A protein large language model for multi-task protein language processing. IEEE Transactions on Artificial Intelligence, 2025. [16] Liuzhenghao Lv, Zongying Lin, Hao Li, Yuyang Liu, Jiaxi Cui, Calvin Yu-Chian Chen, Li Yuan, and Yonghong Tian. ProLLaMA source code repository.https://github.com/ PKU-YuanGroup/ProLLaMA, 2025. Accessed 2026-09-20. [17] Albert Q. Jiang, Alexandre Sablayrolles, Arthur Mensch, Chris Bamford, Devendra Singh Chaplot, Diego de las Casas, Florian Bressand, Gianna Lengyel, Guillaume Lample, Lucile Saulnier, LĂ©lio Renard Lavaud, Marie-Anne Lachaux, Pierre Stock, Teven Le Scao, Thibaut Lavril, Thomas Wang, TimothĂ©e Lacroix, and William El Sayed. Mistral 7B, 2023. [18]Albert Q. Jiang, Alexandre Sablayrolles, Antoine Roux, Arthur Mensch, Blanche Savary, Chris Bamford, et al. Mixtral of Experts, 2024. [19]Mistral AI. Un Ministral, des Ministraux: introducing the worldâs best edge models. https://mistral.ai/news/ministraux, 2024. Accessed 2026-09-20. [20] Mistral AI. mistral-common: tokenization and validation utilities for Mistral models. https://github.com/mistralai/mistral-common, 2025. Accessed 2026-09-20. 14 [21]Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. LoRA: Low-Rank Adaptation of Large Language Models. In International Conference on Learning Representations (ICLR), 2022. [22]Tim Dettmers, Mike Lewis, Sam Shleifer, and Luke Zettlemoyer. 8-bit Optimizers via Block-wise Quantization. In International Conference on Learning Representations (ICLR), 2022. [23]Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, RĂ©mi Louf, Morgan Funtowicz, et al. Transformers: State-of- the-Art Natural Language Processing. In Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pages 38â45, 2020. [24]Sourab Mangrulkar, Sylvain Gugger, Lysandre Debut, Younes Belkada, Sayak Paul, and Benjamin Bossan. PEFT: State-of-the-art Parameter-Efficient Fine-Tuning methods.https: //github.com/huggingface/peft, 2022. Accessed 2026-09-20. [25] Bohdan M. Pavlyshenko. Analysis of Disinformation and Fake News Detection Using Fine-Tuned Large Language Model. arXiv:2309.04704 [cs.CL], 2023. PDF:https://arxiv. org/pdf/2309.04704. [26] Bohdan M. Pavlyshenko. Multilevel Analysis of Cryptocurrency News using RAG Approach with Fine-Tuned Mistral Large Language Model. arXiv:2509.03527 [cs.CL], 2025. PDF: https://arxiv.org/pdf/2509.03527. [27]Kishore Papineni, Salim Roukos, Todd Ward, and Wei-Jing Zhu. BLEU: a Method for Automatic Evaluation of Machine Translation. In Proceedings of the 40th Annual Meeting of the Association for Computational Linguistics (ACL), pages 311â318, 2002. [28]Chin-Yew Lin. ROUGE: A Package for Automatic Evaluation of Summaries. In Text Summarization Branches Out, pages 74â81, 2004. [29]Lianmin Zheng, Wei-Lin Chiang, Ying Sheng, Siyuan Zhuang, Zhanghao Wu, Yonghao Zhuang, Zi Lin, Zhuohan Li, Dacheng Li, Eric P. Xing, Hao Zhang, Joseph E. Gonzalez, and Ion Stoica. Judging llm-as-a-judge with mt-bench and chatbot arena. [30]Yang Liu, Dan Iter, Yichong Xu, Shuohang Wang, Ruochen Xu, and Chenguang Zhu. G-Eval: NLG Evaluation using GPT-4 with Better Human Alignment. In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing (EMNLP), pages 2511â2522, 2023. [31] Shadab Ahmad, Leonardo Jose da Costa Gonzales, Emily H. Bowler-Barnett, Daniel L. Rice, Minjoon Kim, Supun Wijerathne, AurĂ©lien Luciani, Swaathi Kandasaamy, Jie Luo, Xavier Watkins, Edd Turner, Maria J. Martin, and The UniProt Consortium. The UniProt website API: facilitating programmatic access to protein knowledge. Nucleic Acids Re- search, 53(W1):W547âW553, 2025. Article:https://doi.org/10.1093/nar/gkaf394; API documentation:https://w.uniprot.org/help/api; REST endpoint:https: //rest.uniprot.org. [32]OpenAI. OpenAI API documentation: structured outputs.https://platform.openai. com/docs/guides/structured-outputs, 2026. Accessed 2026-09-20. [33] Matthias Blum, Hsin-Yu Chang, Sara Chuguransky, Tiago Grego, Swaathi Kandasaamy, Alex Mitchell, Gift Nuka, Typhaine Paysan-Lafosse, Matloob Qureshi, Shriya Raj, Lorna Richardson, Gustavo A. Salazar, Lowri Williams, Peer Bork, Alan Bridge, Julian Gough, Daniel H. Haft, Ivica Letunic, Aron Marchler-Bauer, Huaiyu Mi, Darren A. Natale, Marco 15 Necci, Christine A. Orengo, Arun P. Pandurangan, Catherine Rivoire, Christian J. A. Sigrist, Ian Sillitoe, Narmada Thanki, Paul D. Thomas, Silvio C. E. Tosatto, Cathy H. Wu, Alex Bateman, and Robert D. Finn. InterPro in 2022. Nucleic Acids Research, 49(D1):D344âD354, 2021. 16 A Appendix A.1 Dataset Retrieval and Preprocessing Entries were retrieved from the UniProt REST API [31] on 2026-09-19 using the current UniProtKB/Swiss-Prot release [1]. Listing 3 shows the paginated download, and Listing 4 the filtering and target construction. import re, requests, pandas as pd from io import StringIO url = "https://rest.uniprot.org/uniprotkb/search" params = # Reviewed (manually curated) entries only; length window in residues. "query": "reviewed:true AND length:[50 TO 1024]", "format": "tsv", "fields": ",".join([ "accession", "protein_name", "organism_name", "length", "sequence", "c_function", # curated FUNCTION comment = supervision target "c_subcellular_location", "c_pathway", "ec", "go_f", "go_p", "go_c", # Gene Ontology aspects (not used for training) "xref_interpro", # domain signatures (reserved for future work) ]), "size": 500, # entries per page def get_next_link(response): """UniProt paginates through the HTTP Link header: <url>; rel="next".""" match = re.search(r'<([^>]+)>; *rel="next"', response.headers.get("Link", "")) return match.group(1) if match else None pages, total_records = [], 0 next_url, next_params = url, params.copy() while next_url and total_records < 350_000: response = requests.get(next_url, params=next_params, timeout=60) response.raise_for_status() page = pd.read_csv(StringIO(response.text), sep=" ") pages.append(page) total_records += len(page) next_url = get_next_link(response) next_params = None # later URLs already contain all parameters print(f"Downloaded: total_records:, proteins") df = pd.concat(pages, ignore_index=True) Listing 3: Paginated retrieval of reviewed Swiss-Prot entries from the UniProt REST API. # Keep organisms that are represented well enough to be learnable (>= 500 entries). organism_list = df["Organism"].value_counts() organism_list = organism_list[organism_list >= 500].index.tolist() len(organism_list) # -> 34 organisms # Bound the token budget of prompt and target. df["seq_len"] = df["Sequence"].str.len() df["func_len"] = df["Function [C]"].str.len() df = df[(df.seq_len <= 700) & (df.func_len <= 850)] df1 = df[df.Organism.isin(organism_list)] # -> 72,873 entries 17 # Target = organism, then the curated FUNCTION comment, joined by "; ". # Evaluation splits the generated string back at the first semicolon. df1["target"] = df1["Organism"] + "; " + df1["Function [C]"] df1[["Sequence", "target"]].to_csv("prot_seq5.csv", index=False) Listing 4: Organism and length filters, and construction of the supervision target. train_df = ( df.rename(columns="Sequence": "sequence", "target": "function") [["sequence", "function"]].dropna() .drop_duplicates(subset=["sequence"]) # no duplicated sequences ) # Standard 20-letter amino-acid alphabet only (no X, B, Z, U, O). train_df = train_df[train_df["sequence"].str.fullmatch(r"[ACDEFGHIKLMNPQRSTVWY]+")] # Drop targets that carry no biological supervision. train_df = train_df[~train_df["function"].str.contains( r"uncharacterized|function unknown", case=False, na=False)] train_df = train_df[train_df["sequence"].str.len().between(50, 700)] dataset = Dataset.from_pandas(train_df, preserve_index=False) dataset = dataset.train_test_split(test_size=0.03, seed=42) # -> train: 67,553 examples, test: 2,090 examples Listing 5: Cleaning rules and train/test split applied before training. 18 A.2 Training Configuration def space_amino_acids(sequence: str) -> str: # One space between residues: keeps the residue-to-token mapping stable. return " ".join(sequence) def build_user_text(sequence: str) -> str: return f"""You are a protein-function annotation assistant. Infer only what is supported by the amino-acid sequence. Return concise valid JSON with one key: "function". Protein sequence: <protein> space_amino_acids(sequence) </protein> """ def build_target(function: str) -> str: # "<organism>; FUNCTION: ..." wrapped in a one-key JSON envelope. return json.dumps("function": function.strip(), ensure_ascii=False) def tokenize_example(example): user_message = "role": "user", "content": ["type": "text", "text": build_user_text(example["sequence"])] # Prompt ending exactly where the assistant answer starts: <s>[INST] ... [/INST] # (mistral-common validates in "serving" mode, where the last message must be # the user's, so the assistant turn is never passed to the chat template.) prompt_ids = tokenizer.apply_chat_template( [user_message], add_generation_prompt=True, tokenize=True, return_dict=True, )["input_ids"] # Expected answer + EOS, exactly as the template renders an assistant turn. answer_ids = tokenizer.encode( build_target(example["function"]), add_special_tokens=False, ) + [tokenizer.eos_token_id] input_ids = (prompt_ids + answer_ids)[:MAX_TOKENS] # MAX_TOKENS = 1536 prompt_length = min(len(prompt_ids), len(input_ids)) # -100 = ignore index: train only on the assistant's annotation. labels = [-100] * prompt_length + input_ids[prompt_length:] return "input_ids": input_ids, "attention_mask": [1] * len(input_ids), "labels": labels Listing 6: Prompt construction, target serialisation and loss masking. Only the answer tokens contribute to the loss. # --- 4-bit NF4 base model (QLoRA) ------------------------------------------ bnb_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="nf4", # NormalFloat4, information-optimal for bnb_4bit_use_double_quant=True, # normally distributed weights bnb_4bit_compute_dtype=torch.bfloat16, ) model = Mistral3ForConditionalGeneration.from_pretrained( "mistralai/Ministral-3-3B-Base-2512", quantization_config=bnb_config, dtype=torch.bfloat16, device_map="": 0, 19 ) model.config.use_cache = False # incompatible with gradient checkpointing # --- LoRA adapters on all projection matrices ------------------------------ model = prepare_model_for_kbit_training( model, use_gradient_checkpointing=True, gradient_checkpointing_kwargs="use_reentrant": False, ) lora_config = LoraConfig( r=64, lora_alpha=128, lora_dropout=0.05, bias="none", task_type="CAUSAL_LM", target_modules=["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"], ) model = get_peft_model(model, lora_config) model.print_trainable_parameters() # trainable params: 135,004,160 || all params: 3,984,094,208 || trainable%: 3.3886 # --- Optimization ---------------------------------------------------------- training_args = TrainingArguments( output_dir=OUTPUT_DIR, num_train_epochs=3, learning_rate=1e-4, lr_scheduler_type="cosine", warmup_steps=0.01, per_device_train_batch_size=16, gradient_accumulation_steps=2, # effective 32 per_device_eval_batch_size=16, train_sampling_strategy="group_by_length", # less padding within a batch gradient_checkpointing=True, gradient_checkpointing_kwargs="use_reentrant": False, bf16=True, tf32=True, optim="paged_adamw_8bit", # paged optimizer, 8-bit states logging_steps=50, eval_strategy="steps", eval_steps=300, save_strategy="steps", save_steps=300, save_total_limit=2, remove_unused_columns=False, report_to="none", seed=42, ) trainer = Trainer(model=model, args=training_args, train_dataset=tokenized["train"], eval_dataset=eval_subset, data_collator=ProteinDataCollator()) trainer.train() Listing 7: 4-bit base model, QLoRA adapters and training arguments. @torch.inference_mode() def generate_batch(sequences: list[str]) -> list[str]: prompts = [prompt_ids_for(s) for s in sequences] max_len = max(len(x) for x in prompts) pad_id = tokenizer.eos_token_id # Left padding: every prompt ends exactly where generation starts. input_ids = torch.tensor([[pad_id] * (max_len - len(x)) + x for x in prompts], device=model.device) attention_mask = torch.tensor([[0] * (max_len - len(x)) + [1] * len(x) for x in prompts], device=model.device) output = model.generate( input_ids=input_ids, attention_mask=attention_mask, max_new_tokens=MAX_NEW_TOKENS, do_sample=False, # greedy decoding use_cache=True, pad_token_id=pad_id, eos_token_id=pad_id, ) return [tokenizer.decode(row[max_len:].tolist(), skip_special_tokens=True).strip() for row in output] Listing 8: Batched greedy generation with left padding, used to annotate the test proteins. 20 A.3 Expert Evaluation Prompt and Pipeline The system prompt below is used verbatim with thegpt-5.6-terramodel; the user message contains the parsed reference and predicted organism and function for one protein. You are a senior expert in molecular biology, biochemistry, enzymology and protein science, with deep familiarity with UniProtKB/Swiss-Prot curation practice and biological taxonomy. You evaluate a model that reads a protein amino-acid sequence and predicts (1) the source organism and (2) the protein's function, in UniProt "FUNCTION" style. You compare each prediction to the curated reference annotation for the same protein. You judge biological meaning, not wording. Be rigorous, consistent and strict. TASK A: organism_predicted (0 or 1) - 1: the predicted organism is the same species as the reference. Ignore formatting, common names in parentheses, synonyms, and strain, isolate or subspecies differences within the same species (e.g. "Escherichia coli (strain K12)" vs "Escherichia coli O157:H7" -> 1). - 0: a different species (even a close relative, e.g. Mus musculus vs Rattus norvegicus -> 0), a genus only, or a missing organism. TASK B: function_quality (integer 0-10) Compare the predicted function to the reference function. Weigh, in order of importance: 1. Molecular function / biochemical activity (catalytic activity, reaction, substrate, binding partner or ligand, protein family or class). 2. Biological process and pathway (the role the protein plays in the cell or organism). 3. Specific details: subcellular context, regulation, complex membership, key partners, cofactors, specificity. Scoring anchors: 10 Biologically equivalent: same activity, process and key specifics; only wording differs. 8-9 Same molecular function and process; minor details missing or slightly imprecise. 6-7 Correct protein family / general activity and broadly correct role, but important specifics (substrate, partner, pathway) missing or partially wrong. 4-5 Partially correct: the right general functional area (e.g. "kinase", "transcription factor", "transporter") but the specific role differs or is wrong. 2-3 Mostly incorrect; only a weak or generic overlap (e.g. both "involved in development"). 1 Essentially unrelated function, but still a plausible protein function. 0 Completely wrong, contradictory, empty, or nonsense. Rules: - Ignore evidence tags, PubMed IDs, citations and the style of the text. - Do not reward length. Extra claims that are wrong or not supported by the reference lower the score. Correct but more specific detail is acceptable. - A vague prediction ("May be involved in...") scores at most 3 unless the reference is equally vague and matches it. - If the prediction is truncated, judge only the content present. - Grade the function independently of whether the organism is correct. TASK C: comments Write a short expert comment (1-2 sentences, at most ~40 words) on the LLM's annotation as a whole: what it got right, what it got wrong or missed, and any notable issue (hallucinated specifics, wrong family, too vague, truncated, correct organism but wrong protein, etc.). Give a brief rationale for each task before the score. Listing 9: System prompt defining the expert grader, the two scoring tasks and the comment task. # --- Split "Organism; FUNCTION: ..." and strip curation metadata ------------ EVIDENCE_RE = re.compile(r"\ECO:[^]*\|\((?:PubMed|By similarity)[^)]*\)") def split_annotation(text: str) -> tuple[str, str]: organism, sep, function = text.partition(";") 21 if not sep: return "", text.strip() function = re.sub(r" *FUNCTION: *", "", function.strip()) function = re.sub(r" 2,", " ", EVIDENCE_RE.sub("", function)).strip() return organism.strip(), function # --- Schema-constrained grader output -------------------------------------- class Evaluation(BaseModel): organism_rationale: str # rationale precedes the score (G-Eval style) organism_predicted: Literal[0, 1] function_rationale: str function_quality: int = Field(ge=0, le=10) comments: str def evaluate_row(row) -> dict: user_prompt = USER_TEMPLATE.format( ref_organism=row.ref_organism, ref_function=row.ref_function, pred_organism=row.pred_organism, pred_function=row.pred_function, ) response = client.responses.parse( model="gpt-5.6-terra", input=["role": "system", "content": SYSTEM_PROMPT, "role": "user", "content": user_prompt], text_format=Evaluation, # structured output: scores always in range ) return response.output_parsed.model_dump() # Graded rows are cached to JSONL, so an interrupted evaluation resumes; # requests run in a thread pool with exponential back-off on failure. Listing 10: Parsing of annotations, structured-output schema and the graded API call. 22 A.4 Graded Prediction Examples The examples below are verbatim outputs of the fine-tuned model on held-out test proteins, with the reference annotation and the expert graderâs comment. Evidence tags are shown as generated, which makes a defect of the model directly visible: even among the score-10 predictions of Appendix A.4.1âwhose functional text is judged biologically equivalent to the curated annotationâseven of ten carry provenance tags that differ from the reference. Example 7 replaces the curated supportECO:0000269|PubMed:12214233with a claim of inference by similarity, and Example 6 cites three PubMed identifiers, none of which appears in the curated entry. PubMed identifiers are arbitrary integers unrelated to the amino-acid sequence and thus cannot be predicted from it; the model reproduces the form of a citation rather than its content. The grading rubric of Appendix A.3 instructs the expert model to ignore evidence tags, so this does not influence the scores reported in Section 5. A.4.1 Predictions scoring 10 Example 1. Reference: Sus scrofa (Pig); FUNCTION: Cross-linked envelope protein of keratinocytes. It is a keratinocyte protein that first appears in the cell cytosol, but ultimately becomes cross- linked to membrane proteins by transglutaminase. All that results in the formation of an insoluble envelope beneath the plasma membrane. Prediction: Homo sapiens (Human); FUNCTION: Cross-linked envelope protein of keratinocytes. It is a keratinocyte protein that first appears in the cell cytosol, but ultimately becomes cross-linked to membrane proteins by transglutaminase. All that results in the formation of an insoluble envelope beneath the plasma membrane. Expert comment: Function annotation matches the curated role essentially exactly. The organism assignment is incorrect: human was predicted instead of pig. Example 2. Reference: Homo sapiens (Human); FUNCTION: Acts as a GTPase activating protein for RAB5. Does not act on RAB4 or RAB11 (By similarity). ECO:0000250|UniProtKB:Q8IZP1. Prediction: Homo sapiens (Human); FUNCTION: Acts as a GTPase activating protein for RAB5. Does not act on RAB4 or RAB11 (By similarity). ECO:0000250. Expert comment: Exact match to the curated organism and functional annotation, including Rab substrate specificity. Example 3. Reference: Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987); FUNCTION: Component of the ribosome, a large ribonucleoprotein complex re- sponsible for the synthesis of proteins in the cell. The small ribosomal subunit (SSU) binds messenger RNAs (mRNAs) and translates the encoded message by selecting cognate aminoacyl-transfer RNA (tRNA) molecules. The large subunit (LSU) contains the ribosomal 23 catalytic site termed the peptidyl transferase center (PTC), which catalyzes the formation of peptide bonds, thereby polymerizing the amino acids delivered by tRNAs into a polypeptide chain. The nascent polypeptides leave the ribosome through a tunnel in the LSU and interact with protein factors that function in enzymatic processing, targeting, and the membrane insertion of nascent chains at the exit of the ribosomal tunnel. ECO:0000305|PubMed: 34815343. Prediction: Saccharomyces cerevisiae (strain ATCC 204508 / S288c) (Bakerâs yeast); FUNCTION: Component of the ribosome, a large ribonucleoprotein complex responsible for the synthesis of proteins in the cell. The small ribosomal subunit (SSU) binds messenger RNAs (mRNAs) and translates the encoded message by selecting cognate aminoacyl-transfer RNA (tRNA) molecules. The large subunit (LSU) contains the ribosomal catalytic site termed the peptidyl transferase center (PTC), which catalyzes the formation of peptide bonds, thereby polymerizing the amino acids delivered by tRNAs into a polypeptide chain. The nascent polypeptides leave the ribosome through a tunnel in the LSU and interact with protein factors that function in enzymatic processing, targeting, and the membrane insertion of nascent chains at the exit of the ribosomal tunnel. ECO:0000305|PubMed:22096102. Expert comment: The ribosome-component annotation matches the reference essentially exactly. The organism assignment is incorrect: bakerâs yeast is not Neurospora crassa. Example 4. Reference: Oryctolagus cuniculus (Rabbit); FUNCTION: Receptor for adenosine. The activity of this receptor is mediated by G proteins which activate adenylyl cyclase (By similarity). ECO: 0000250. Prediction: Mus musculus (Mouse); FUNCTION: Receptor for adenosine. The activity of this receptor is mediated by G proteins which activate adenylyl cyclase. Expert comment: The molecular function and signaling mechanism are correct. However, the predicted organism is mouse rather than rabbit. Example 5. Reference: Drosophila melanogaster (Fruit fly); FUNCTION: Odorant receptor which mediates accep- tance or avoidance behavior, depending on its substrates. The odorant receptor repertoire encodes a large collection of odor stimuli that vary widely in identity, intensity, and duration. May form a complex with Orco to form odorant-sensing units, providing sensitive and prolonged odorant signaling and calcium permeability. ECO:0000269|PubMed:16615896. Prediction: Drosophila melanogaster (Fruit fly); FUNCTION: Odorant receptor which mediates accep- tance or avoidance behavior, depending on its substrates. The odorant receptor repertoire encodes a large collection of odor stimuli that vary widely in identity, intensity, and duration. May form a complex with Orco to form odorant-sensing units, providing sensitive and pro- longed odorant signaling and calcium permeability. Involved in the behavioral responses to ethyl acetate, pentyl acetate, and anisole. ECO:0000269|PubMed:21613503, ECO:0000269| PubMed:21857978. 24 Expert comment: The annotation is functionally equivalent to the curated odorant-receptor description and correctly identifies the species. It additionally provides plausible odorant-response specificity without introducing a contradiction. Example 6. Reference: Saccharomyces cerevisiae (strain ATCC 204508 / S288c) (Bakerâs yeast); FUNCTION: Component of the kinetochore, a multiprotein complex that assembles on centromeric DNA and attaches chromosomes to spindle microtubules, mediating chromosome segregation and sister chromatid segregation during meiosis and mitosis. Component of the inner kinetochore constitutive centromere-associated network (CCAN), which serves as a structural platform for outer kinetochore assembly. ECO:0000269|PubMed:9987135. Prediction: Saccharomyces cerevisiae (strain ATCC 204508 / S288c) (Bakerâs yeast); FUNCTION: Component of the kinetochore, a multiprotein complex that assembles on centromeric DNA and attaches chromosomes to spindle microtubules, mediating chromosome segregation and sister chromatid segregation during meiosis and mitosis. Component of the inner kinetochore constitutive centromere-associated network (CCAN), which serves as a structural platform for outer kinetochore assembly. ECO:0000269|PubMed:11266451, ECO:0000269|PubMed: 12514103, ECO:0000269|PubMed:12514104. Expert comment: Exact match to the curated organism and functional annotation, including CCAN/inner kinetochore localization and the chromosome-segregation role. Example 7. Reference: Mus musculus (Mouse); FUNCTION: Putative pheromone receptor implicated in the regulation of social and reproductive behavior. ECO:0000269|PubMed:12214233. Prediction: Homo sapiens (Human); FUNCTION: Putative pheromone receptor implicated in the regulation of social and reproductive behavior. ECO:0000250|UniProtKB:Q8VIC6. Expert comment: Function annotation is biologically equivalent to the reference, but the organism is incorrect: human rather than mouse. Example 8. Reference: Homo sapiens (Human); FUNCTION: Odorant receptor. ECO:0000305. Prediction: Homo sapiens (Human); FUNCTION: Odorant receptor. ECO:0000305. Expert comment: Both organism and function match the curated annotation exactly. Example 9. Reference: Gallus gallus (Chicken); FUNCTION: Pseudokinase which, in complex with CAB39/MO25 (CAB39/MO25alpha or CAB39L/MO25beta), binds to and activates STK11/LKB1. Adopts 25 a closed conformation typical of active protein kinases and binds STK11/LKB1 as a pseudo- substrate, promoting conformational change of STK11/LKB1 in an active conformation (By similarity). ECO:0000250. Prediction: Xenopus laevis (African clawed frog); FUNCTION: Pseudokinase which, in complex with CAB39/MO25 (CAB39/MO25alpha or CAB39L/MO25beta), binds to and activates STK11/LKB1. Adopts a closed conformation typical of active protein kinases and binds STK11/LKB1 as a pseudosubstrate, promoting conformational change of STK11/LKB1 in an active conformation (By similarity). ECO:0000250. Expert comment: Function annotation is fully concordant with the reference, including the CAB39/MO25- dependent LKB1 activation mechanism. The organism assignment is incorrect: African clawed frog rather than chicken. Example 10. Reference: Saccharomyces cerevisiae (strain ATCC 204508 / S288c) (Bakerâs yeast); FUNCTION: Component of the mitochondrial ribosome (mitoribosome), a dedicated translation machinery responsible for the synthesis of mitochondrial genome-encoded proteins, including at least some of the essential transmembrane subunits of the mitochondrial respiratory chain. The mitoribosomes are attached to the mitochondrial inner membrane and translation products are cotranslationally integrated into the membrane. ECO:0000305|PubMed:25609543, ECO: 0000305|PubMed:28154081. Prediction: Saccharomyces cerevisiae (strain ATCC 204508 / S288c) (Bakerâs yeast); FUNCTION: Component of the mitochondrial ribosome (mitoribosome), a dedicated translation machinery responsible for the synthesis of mitochondrial genome-encoded proteins, including at least some of the essential transmembrane subunits of the mitochondrial respiratory chain. The mitoribosomes are attached to the mitochondrial inner membrane and translation products are cotranslationally integrated into the membrane. ECO:0000305|PubMed:24675956, ECO: 0000305|PubMed:25609543. Expert comment: Exact match for both organism and function. The annotation accurately captures mitoribo- some membership and its membrane-associated mitochondrial translation role. 26 A.4.2 Predictions scoring 7 Example 11. Reference: Homo sapiens (Human); FUNCTION: May regulate calcium-dependent activities in the endoplasmic reticulum lumen or post-ER compartment. Prediction: Bos taurus (Bovine); FUNCTION: Involved in regulation of vitamin K-dependent carboxyla- tion of multiple N-terminal glutamate residues. Seems to inhibit gamma-carboxylase GGCX. Binds 7 calcium ions with a low affinity (By similarity). ECO:0000250. Expert comment: The organism is incorrect. The functional prediction broadly fits an ER calcium-dependent regulatory role, but adds specific gamma-carboxylase inhibition and calcium stoichiometry not supported by the curated reference. Example 12. Reference: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Repressor of jasmonate responses. Jasmonoyl-isoleucine (JA-Ile) specifically promotes COI1-TIFY10A/JAZ1 interaction. Inter- acts with COI1 and inositol pentakisphosphate to form a high-affinity jasmonates coreceptor. ECO:0000269|PubMed:17637675, ECO:0000269|PubMed:17637677, ECO:0000269|PubMed: 19151223. Prediction: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Repressor of jasmonate responses. ECO:0000269|PubMed:19151223. Expert comment: Correct species and central repressor role. The annotation is substantially incomplete because it lacks the JA-Ile-specific COI1 interaction and coreceptor mechanism. Example 13. Reference: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Involved in multiple distinct defense responses. May function as a disease resistance (R) protein. ECO:0000269|PubMed: 14756307, ECO:0000269|PubMed:15604743. Prediction: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: May be involved in pectin and/or xylans biosynthesis in cell walls. ECO:0000250. Expert comment: Correct species, DNA-binding specificity, and general activator role. The predicted target- gene context is incorrect and misses the defining MEIS1-dependent activation of PF4. Example 14. Reference: Homo sapiens (Human); FUNCTION: Inhibits signal transduction by increasing the GTPase activity of G protein alpha subunits thereby driving them into their inactive GDP-bound form. Binds to G(i)-alpha and G(o)-alpha, but not to G(s)-alpha (By similarity). ECO: 0000250. 27 Prediction: Homo sapiens (Human); FUNCTION: Inhibits signal transduction by increasing the GTPase activity of G protein alpha subunits thereby driving them into their inactive GDP-bound form. Binds to G(i) alpha-1, G(i) alpha-2, G(i) alpha-3 and G(q) alpha. Expert comment: Correct human assignment and correct RGS/GTPase-accelerating activity. Binding speci- ficity is materially inaccurate: G(o)-alpha is omitted and unsupported G(q)-alpha binding is asserted. Example 15. Reference: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Required for constitutive and alterna- tive pre-mRNA splicing. Prediction: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Probably involved in intron recognition and spliceosome assembly. Expert comment: Correct species and correctly identifies a spliceosomal/pre-mRNA splicing role. It misses the specific requirement in both constitutive and alternative splicing and adds unverified mechanistic detail. Example 16. Reference: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Transcription factor. Involved in responses to transient and long-term shade. Required for the light-mediated in- hibition of hypocotyl elongation. Necessary for rapid light-induced expression of the photomorphogenesis- and circadian-related gene APRR9. Seems to play a role in multi- ple PHYB responses, such as flowering transition and petiole elongation. ECO:0000269| PubMed:14668869, ECO:0000269|PubMed:16565297, ECO:0000269|PubMed:16891401. Prediction: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Transcription factor that binds specif- ically to a 5â-A[AG]G-3â consensus core sequence. ECO:0000250. Expert comment: Correct species and core transcription-factor function. The annotation misses the defining PHYB/shade-response and photomorphogenic roles, while adding an unverified sequence- specific DNA-binding claim. Example 17. Reference: Xenopus laevis (African clawed frog); FUNCTION: Growth factor that plays an essential role in the regulation of embryonic development, cell proliferation, cell migration, survival and chemotaxis. Potent mitogen for cells of mesenchymal origin. Signaling is modulated by the formation of heterodimers with PDGFB (By similarity). ECO:0000250. Prediction: Danio rerio (Zebrafish) (Brachydanio rerio); FUNCTION: Growth factor that plays an essential role in the regulation of embryonic development, cell proliferation, cell migration, survival and chemotaxis. Potent mitogen for cells of mesenchymal origin. Required for normal proliferation and recruitment of pericytes and vascular smooth muscle cells in the 28 central nervous system, skin, lung, heart and placenta. Required for normal blood vessel development, and for normal development of kidney glomeruli. Plays an important role in wound healing. Signaling is modulated by the formation of heterodimers with PDGFA (By similarity). ECO:0000250. Expert comment: The core PDGF-like growth-factor activity and developmental role are correct, but the species is wrong. Several added phenotype details are unsupported, and the heterodimer partner is incorrectly given as PDGFA instead of PDGFB. Example 18. Reference: Dictyostelium discoideum (Social amoeba); FUNCTION: Probable adapter protein and signal transducer that links members of the tumor necrosis factor receptor family to different signaling pathways by association with the receptor cytoplasmic domain and kinases. ECO: 0000250. Prediction: Dictyostelium discoideum (Social amoeba); FUNCTION: Probable adapter protein and signal transducer that links members of the tumor necrosis factor receptor family to different signaling pathways by association with the receptor cytoplasmic domain and kinases. ECO: 0000250. Expert comment: Correctly identifies the protein as a heavy-metal-binding zinc/copper protein, but the stated metal composition is wrong and the neuronal inhibitory activity is omitted. The organism is human rather than mouse. Example 19. Reference: Xenopus laevis (African clawed frog); FUNCTION: Ligand for members of the frizzled family of seven transmembrane receptors. Plays an important role in embryonic kidney development. Acts downstream of Notch signaling during pronephric kidney development. During early pronephros development, patterns the proximal pronephric anlagen to promote glomus and nephrostome formation. Also required later in pronephros development for tubulogenesis. ECO:0000269|PubMed:12142017, ECO:0000269|PubMed:19793883. Prediction: Mus musculus (Mouse); FUNCTION: Ligand for members of the frizzled family of seven transmembrane receptors. Probable developmental protein. May be a signaling molecule which affects the development of discrete regions of tissues. Is likely to signal over only few cell diameters. Expert comment: The molecular identity as a Frizzled ligand is correct, but the organism is wrong and the developmental annotation is overly generic. Key kidney/pronephros-specific roles and Notch-pathway context are missing. Example 20. Reference: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Metallothioneins have a high content of cysteine residues that bind various heavy metals (Probable). Functions as a metal chelator of copper (Cu) and zinc (Zn) (PubMed:18287486). Plays a role in Cu homeostasis, 29 specifically in the remobilization of Cu from senescing leaves. The mobilization of Cu from internal sources is important for seed development (PubMed:24635746). ECO:0000269| PubMed:18287486, ECO:0000269|PubMed:24635746, ECO:0000305. Prediction: Arabidopsis thaliana (Mouse-ear cress); FUNCTION: Metallothioneins have a high content of cysteine residues that bind various heavy metals. ECO:0000305. Expert comment: Correct species and metallothionein metal-binding function, but the annotation is incom- plete. It lacks the specific Cu/Zn chelation and the physiologically important role in Cu remobilization during senescence and seed development. 30