{"server":"com.seqbench/workbench","count":50,"changes":[{"tool":"golden_gate_library","kind":"added","observed_at":"2026-10-16T20:49:45.301Z","fields":[],"description_before":null,"description_after":"Every combination of interchangeable part plasmids, assembled. Give the alternatives at each position — three promoters, four coding sequences, two terminators, one backbone — and it builds all twenty-four, reporting which close into a plasmid, which do not and why, and whether two combinations built the same molecule (nearly always one part under two names, which makes the library smaller than it looks). Interchangeability is MEASURED rather than taken from a kit table: parts are alternatives at a position when the enzyme releases the same overhang pair from each, which is true of a published standard and of your own, and cannot disagree with the plasmid in the tube. Past 500 combinations it refuses with the number rather than building the first few.","description_similarity":null,"before_hash":null,"after_hash":"d89c136b734837082b7b02eb67ce2942"},{"tool":"expression_cassette_check","kind":"added","observed_at":"2026-10-16T20:49:45.301Z","fields":[],"description_before":null,"description_after":"Check the ARRANGEMENT around each coding sequence, which is what decides whether a finished clone expresses at all: a promoter for the named host within reach on the same strand, a Shine-Dalgarno at a workable spacing (bacteria) or a Kozak context (eukaryote), every tag in the CDS's own reading frame, and a terminator or polyA signal downstream. Paste an annotated GenBank record and the CDS features are used; paste bare sequence and the long ORFs are found instead. Nothing here predicts a LEVEL — it reports what is present, absent or out of frame, and every absence names the signature library it was decided against rather than claiming the construct has none.","description_similarity":null,"before_hash":null,"after_hash":"0c4972026e39cefde3554a378a27ce1c"},{"tool":"genome_region","kind":"added","observed_at":"2026-10-16T14:56:28.133Z","fields":[],"description_before":null,"description_after":"Find a gene in an assembly by symbol or locus tag and return its sequence with however much flanking DNA you ask for — the step before designing a knockout, a C-terminal tag or an HDR donor, where you know the gene's name but not its coordinates. Give the assembly accession (GCF_000005845.2 for E. coli K-12 MG1655) and the gene (araC, or the locus tag b0064). `upstream` is upstream OF THE GENE: on a minus-strand gene that is the higher genomic coordinate, and the sequence comes back 5'→3' along the gene either way. Only an EXACT symbol or locus-tag match is used — NCBI's text search is fuzzy and ranks unrelated genes first, so a loose match is reported as a refusal naming what it found rather than answered with the wrong locus.","description_similarity":null,"before_hash":null,"after_hash":"72ea3a51f2988ec6bc44fb2242920674"},{"tool":"sequence_fetch","kind":"changed","observed_at":"2026-10-16T14:56:28.133Z","fields":["description","inputSchema"],"description_before":"Fetch a public DNA/protein record by accession from NCBI Nucleotide, NCBI Protein, UniProt, or Ensembl (e.g. NM_000546, NP_000537, P04637, ENSG00000141510). Only the accession is sent upstream. Use sequence_search first if you only know a gene/organism name, not an accession. For an Ensembl transcript ID this returns spliced cDNA; for a gene ID it returns the full genomic locus (introns included) — Ensembl's own default for each ID type.","description_after":"Fetch a public DNA/protein record by accession from NCBI Nucleotide, NCBI Protein, UniProt, or Ensembl (e.g. NM_000546, NP_000537, P04637, ENSG00000141510) — the whole record, or with `start`/`end` just that region of it, which is how you take a few kb out of a chromosome instead of downloading the chromosome. Only the accession is sent upstream. Use sequence_search first if you only know a gene/organism name, not an accession, or genome_region if you know the gene's name but not its coordinates. For an Ensembl transcript ID this returns spliced cDNA; for a gene ID it returns the full genomic locus (introns included) — Ensembl's own default for each ID type.","description_similarity":0.731,"before_hash":"5cb24945a2b2dd82e8a0970670733ea3","after_hash":"c29d1813410e74ffaefae286ca04ed15"},{"tool":"cloning_simulate","kind":"changed","observed_at":"2026-10-16T14:56:28.133Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"424d7aa195b7b6c368d80a7daa915157","after_hash":"75c7a342f54bb1eb37093f1bc61dcb6e"},{"tool":"protein_annotate_poll","kind":"changed","observed_at":"2026-10-16T09:07:23.635Z","fields":["description"],"description_before":"Check an InterProScan job submitted via protein_annotate_submit. Returns {status, ready:false} while still running; once FINISHED, also returns the parsed domain architecture, per-match details and deduplicated GO terms.","description_after":"Check an InterProScan job submitted via protein_annotate_submit. Returns {status, ready:false} while still running; once FINISHED, also returns the parsed domain architecture, per-match details, deduplicated GO terms, and `topology` — the MEMBRANE TOPOLOGY and SIGNAL PEPTIDE that EBI's default run includes (Phobius, TMHMM and SignalP), as {kind, start, end, source} with kind one of signal-peptide / transmembrane / cytoplasmic / non-cytoplasmic. Two predictors reporting nearly the same span are listed separately rather than merged, because a merged boundary is one neither produced. ⚠️ EBI runs every SignalP ORGANISM model whatever the protein is, so a human sequence comes back with gram-positive and gram-negative hits too; the source is named in full on every feature and Phobius — which is organism-agnostic and the only one that returns a full inside/outside topology — sorts first.","description_similarity":0.303,"before_hash":"63c388730c55c7911bca9321e02f29c9","after_hash":"bf31d455a1e4941fe2bda397e337a50a"},{"tool":"protein_annotate_submit","kind":"changed","observed_at":"2026-10-16T09:07:23.635Z","fields":["description"],"description_before":"Submit a protein sequence to EBI InterProScan for domain architecture, family and GO-term annotation. Returns a jobId immediately — the job itself takes minutes; poll it with protein_annotate_poll.","description_after":"Submit a protein sequence to EBI InterProScan for domain architecture, family and GO-term annotation, AND for membrane topology and signal-peptide prediction — EBI's default run includes Phobius, TMHMM and SignalP, so a transmembrane helix, its inside/outside topology and a cleaved signal peptide all come back without asking for them (see `topology` on the poll result). Returns a jobId immediately — the job itself takes minutes; poll it with protein_annotate_poll.","description_similarity":0.491,"before_hash":"cd4fb66ee1b36ab2923cdefc66666340","after_hash":"baab7da867960dba8c7083fec75d7129"},{"tool":"protein_hydrophobicity","kind":"changed","observed_at":"2026-10-16T09:07:23.635Z","fields":["description","inputSchema"],"description_before":"Sliding-window hydropathy/hydrophobicity profile (ProtScale-style) over a published amino-acid scale.","description_after":"Sliding-window hydropathy/hydrophobicity profile (ProtScale-style) over a published amino-acid scale. On the Kyte-Doolittle scale it also returns `hydrophobicStretches`: spans where the 19-residue average stays at or above 1.6, the line Kyte & Doolittle (1982) draw for a membrane-buried segment. ⚠️ That is a FACT ABOUT THE CURVE, not a transmembrane prediction — it cannot tell a signal peptide's h-region from a membrane helix, carries no inside/outside topology, and fires on a buried hydrophobic core in a soluble protein. For an actual prediction use protein_annotate_submit, whose InterProScan run includes Phobius, TMHMM and SignalP.","description_similarity":0.163,"before_hash":"33b65ec0785f61792cbb78946fae75bc","after_hash":"59ed16a9fc5aea5754a2429f200fbcdd"},{"tool":"primer_specificity","kind":"changed","observed_at":"2026-10-16T09:07:23.635Z","fields":["description","inputSchema"],"description_before":"Self-hosted e-PCR-style screen for off-target amplicons predicted by a primer pair against a small set of curated reference genomes (currently: E. coli K-12 MG1655, B. subtilis 168, human mitochondrion rCRS, Mycoplasma hyorhinis SK76 — see genomesChecked in the response for the exact list, and note that the nuclear human and mouse genomes are NOT covered). Amplicons are 1-based inclusive on the plus strand; a product across a circular genome's origin reports an end lower than its start and sets wraps: true. This checks background/host-genome specificity, NOT whether the primers hit your intended target — pair it with in_silico_pcr against your own template for that. Each off-target end reports its 3' ANCHOR — the primer's unbroken run of matched bases at the extending end — with that anchor's nearest-neighbor ΔG and a margin against the intended, fully matched reaction, so a site can be told apart by WHERE its mismatches fall rather than only how many there are: one mismatch at the 5' end leaves a site nearly as strong, and one at the 3' base leaves it unable to prime at all. Batchable over candidate REVERSE primers against one fixed forward primer (screen many candidates against a shared partner) — not independent primer-pair batching, which this tool doesn't support. A primer may carry a non-templated 5' tail (a restriction site, a Gibson arm, a tag): the screen looks for a 3'-anchored annealing region as well as a full-length match, so a tailed cloning primer is screened rather than silently matching nothing. Each end's `anchor` is the annealed run, which is the length that matters for extension, and `start`/`end` are measured on the ANNEALED footprints — the bases each primer actually pairs with on the genome — so `length` (the product, tails included) equals end - start + 1 only for untailed primers. Screening a TAILED primer without `intendedTemplate` inflates every margin by the tail's own free energy, because nothing about an oligo says where its non-templated part ends; `intended.basis` reports which footprint the margins rest on.","description_after":"Self-hosted e-PCR-style screen for off-target amplicons predicted by a primer pair against the background chosen with `background`: the bundled lab genomes (the default — E. coli K-12 MG1655, B. subtilis 168, human mitochondrion rCRS, Mycoplasma hyorhinis SK76), or the human or mouse TRANSCRIPTOME, one transcript per gene, where an off-target product means a different GENE. See genomesChecked in the response for what actually ran. No background covers the nuclear genome, so an off-target in an intron, a promoter, an intergenic region or genomic-DNA carry-over is out of scope in every mode. Amplicons are 1-based inclusive on the plus strand; a product across a circular genome's origin reports an end lower than its start and sets wraps: true. This checks background/host-genome specificity, NOT whether the primers hit your intended target — pair it with in_silico_pcr against your own template for that. Each off-target end reports its 3' ANCHOR — the primer's unbroken run of matched bases at the extending end — with that anchor's nearest-neighbor ΔG and a margin against the intended, fully matched reaction, so a site can be told apart by WHERE its mismatches fall rather than only how many there are: one mismatch at the 5' end leaves a site nearly as strong, and one at the 3' base leaves it unable to prime at all. Batchable over candidate REVERSE primers against one fixed forward primer (screen many candidates against a shared partner) — not independent primer-pair batching, which this tool doesn't support. A primer may carry a non-templated 5' tail (a restriction site, a Gibson arm, a tag): the screen looks for a 3'-anchored annealing region as well as a full-length match, so a tailed cloning primer is screened rather than silently matching nothing. Each end's `anchor` is the annealed run, which is the length that matters for extension, and `start`/`end` are measured on the ANNEALED footprints — the bases each primer actually pairs with on the genome — so `length` (the product, tails included) equals end - start + 1 only for untailed primers. Screening a TAILED primer without `intendedTemplate` inflates every margin by the tail's own free energy, because nothing about an oligo says where its non-templated part ends; `intended.basis` reports which footprint the margins rest on.","description_similarity":0.855,"before_hash":"e4e058df61bd1b98a74af21fe13d6629","after_hash":"81750ffc4b5e5f81402a8dd8c1f89a87"},{"tool":"motif_discover","kind":"added","observed_at":"2026-10-16T09:07:23.635Z","fields":[],"description_before":null,"description_after":"Find a motif NOBODY TYPED: given a set of sequences (multi-record FASTA), report the short pattern they share, as a consensus, a position-weight matrix and one site per sequence. This is the opposite question from motif_finder, which searches for a pattern you already have. Gibbs site sampler (Lawrence et al., Science 1993), one occurrence per sequence, both strands by default. ⚠️ READ `found` BEFORE THE CONSENSUS: a Gibbs sampler returns a motif from ANY input, including pure noise, because its objective has a maximum whether or not anything is there — so every run is scored against shuffled copies of the same sequences, which hold the same length and base composition and no arrangement. `found` is true only when the real alignment beats every shuffle outright AND clears the control mean by the margin in `control.zScore`; when it is false the consensus and sites are still returned, so you can see what was rejected. Measured: 0 of 20 pure-noise sets were reported as found, and a 10-mer planted in all 12 sequences was recovered exactly on 5 of 5 seeds. The sampler is deterministic — the same input gives the same answer, so a saved or shared result reproduces; pass a different `seed` to see whether the motif survives a different starting point, because one that does not is weak.","description_similarity":null,"before_hash":null,"after_hash":"8556d86f820c7d2a08c27e2bc24cfe4f"},{"tool":"fasta_filter","kind":"added","observed_at":"2026-10-16T02:54:35.717Z","fields":[],"description_before":null,"description_after":"Keep a subset of a FASTA file: by length, by a LIST of names (the shape \"filter by ID\" actually takes — two hundred accessions, not one substring), by a drop list, and by removing records that are the same sequence twice. Every dropped record comes back named with the one rule that removed it, because a count says you lost 88 sequences and not which. Identical sequences are reported whether or not they were asked to be dropped: a folder concatenated twice looks fine until something downstream counts it.","description_similarity":null,"before_hash":null,"after_hash":"32fe1bab172da92d4dc397e68cae3d48"},{"tool":"phylogenetic_tree","kind":"added","observed_at":"2026-10-16T02:54:35.717Z","fields":[],"description_before":null,"description_after":"A neighbour-joining tree from a multiple ALIGNMENT, as Newick. Distances are corrected pairwise identities over the columns where both rows have a residue — Jukes-Cantor for nucleotides, Poisson for protein, the same corrections MEGA applies by default — and the tree is rooted at the midpoint of its longest tip-to-tip path. Branch support is Felsenstein's bootstrap over alignment columns, written into the Newick as the usual internal-node labels and returned per split; it needs four or more sequences and is refused with a reason past the work one call will do, rather than returned from fewer replicates under the same name. Takes the output of multiple_sequence_alignment: inferring an alignment here would bury the aligner's parameters inside a tree.","description_similarity":null,"before_hash":null,"after_hash":"8c198c5a6c406ca81bbb7eacfa93f894"},{"tool":"protein_properties","kind":"changed","observed_at":"2026-10-16T02:54:35.717Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"9047bad71f8b8f16ae3a85efd4327ed9","after_hash":"05ed7edda12de8125c4d2d51ef30bf53"},{"tool":"cloning_simulate","kind":"changed","observed_at":"2026-10-16T02:54:35.717Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"13aff6203da378d81edd29fb814a95c2","after_hash":"424d7aa195b7b6c368d80a7daa915157"},{"tool":"qpcr_assay_design","kind":"added","observed_at":"2026-10-16T02:54:35.717Z","fields":[],"description_before":null,"description_after":"Design a qPCR assay: primer pairs under qPCR's own constraints (70-150 bp product, tightly matched Tm) each with the best hydrolysis (TaqMan-style) probe that fits between them. The probe sits 6-12 °C above the warmer primer, never begins with G — a 5' guanine quenches the reporter even after the probe is cleaved — carries no run of four identical bases, and is reported on whichever strand has more C than G, with that strand named. A pair whose window holds no legal probe is still returned in order, because a SYBR assay needs no probe and dropping it would answer the probe question when the primers were what was asked for. For an ordinary PCR product use primer_design, which has the wider amplicon range.","description_similarity":null,"before_hash":null,"after_hash":"0108e0086abf9a605bf317f2f1dac9ab"},{"tool":"melting_temperature","kind":"changed","observed_at":"2026-10-16T02:54:35.717Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"e6b8e49a0707d47834fb36eb1ccdb4df","after_hash":"d6b5112498c8dfa8dbaa69411f2bda6c"},{"tool":"rna_fold","kind":"changed","observed_at":"2026-10-10T19:23:34.639Z","fields":["description"],"description_before":"Predict an RNA secondary structure by minimum free energy (MFE) with ViennaRNA's full Turner 2004 loop model at 37 °C (no pseudoknots). Returns the dot-bracket structure, the MFE (kcal/mol), the list of base pairs, and the engine that produced them. PREDICTED, NOT MEASURED. Benchmarks of MFE folding against known structures put single-sequence accuracy near 40-70% of base pairs recovered, falling as the sequence gets longer; no held-out statistic is measured here. The MFE structure is one structure out of an ensemble, and a second structure within a fraction of a kcal/mol of it is common. Valid for: a single strand up to 2,000 nt at a fixed 37 °C (600 nt when folded in the workbench, which runs the fallback engine in the browser). No pseudoknots, no two-strand hybridization — use oligo_cofold for that — and no temperature dependence, so a structure predicted here is not a structure at your annealing temperature.","description_after":"Predict an RNA secondary structure by minimum free energy (MFE) with ViennaRNA's full Turner 2004 loop model at 37 °C (no pseudoknots). Returns the dot-bracket structure, the MFE (kcal/mol), the list of base pairs, and the engine that produced them. PREDICTED, NOT MEASURED. Benchmarks of MFE folding against known structures put single-sequence accuracy near 40-70% of base pairs recovered, falling as the sequence gets longer; no held-out statistic is measured here. The MFE structure is one structure out of an ensemble, and a second structure within a fraction of a kcal/mol of it is common. Valid for: a single strand up to 3,000 nt at a fixed 37 °C (600 nt when folded in the workbench, which runs the fallback engine in the browser). No pseudoknots, no two-strand hybridization — use oligo_cofold for that — and no temperature dependence, so a structure predicted here is not a structure at your annealing temperature.","description_similarity":0.98,"before_hash":"6e05881ca049b357725f261b91b74175","after_hash":"d57a8ce3aa8140f58a2f67ba259967ef"},{"tool":"hgvs_convert","kind":"changed","observed_at":"2026-10-10T19:23:34.639Z","fields":["description","inputSchema"],"description_before":"Parse an HGVS \"c.\" variant description (by gene symbol, RefSeq NM_, or Ensembl ENST accession), convert it to genomic (g.) coordinates via a real, live-fetched Ensembl exon/CDS map (transcripts resolved through the bundled MANE RefSeq<->Ensembl crosswalk), apply 3'-rule normalization to any del/dup/ins, and predict the protein (p.) effect where that is safely computable. Also accepts a genomic \"g.\" position on a chromosome or RefSeqGene (NC_/NG_, GRCh38 or GRCh37): it is validated and placed on GRCh38 by NCBI, projected onto the MANE Select transcript by Ensembl, and converted back by this tool's own engine, which must agree — so the answer rests on two independent conversions. And the \"NC_/NG_(NM_…):c.\" form converts on the transcript in parentheses. Refuses cleanly — rather than guessing — for circular/mitochondrial genomes, RNA-level or protein-level input, uncertain/mosaic syntax, splice-junction-adjacent or inversion protein effects, and non-MANE/non-Ensembl transcripts.","description_after":"Parse an HGVS \"c.\" variant description (by gene symbol, RefSeq NM_, or Ensembl ENST accession), convert it to genomic (g.) coordinates via a real, live-fetched Ensembl exon/CDS map (transcripts resolved through the bundled MANE RefSeq<->Ensembl crosswalk), apply 3'-rule normalization to any del/dup/ins, and predict the protein (p.) effect where that is safely computable. Also accepts a genomic \"g.\" position on a chromosome or RefSeqGene (NC_/NG_, GRCh38 or GRCh37): it is validated and placed on GRCh38 by NCBI, projected onto the MANE Select transcript by Ensembl, and converted back by this tool's own engine, which must agree — so the answer rests on two independent conversions. And the \"NC_/NG_(NM_…):c.\" form converts on the transcript in parentheses. A \"c.\" on a RefSeq transcript outside MANE is placed by NCBI and converted on the gene's MANE Select transcript. A single amino-acid substitution (\"TP53:p.Pro72Arg\") is read as its codon change when exactly one single-base change produces it; otherwise every candidate is listed. Refuses cleanly — rather than guessing — for circular/mitochondrial genomes, RNA-level input, other protein-level input, uncertain/mosaic syntax, and splice-junction-adjacent or inversion protein effects.","description_similarity":0.828,"before_hash":"dd406e3ec04a84b1628b175cb6cc1d04","after_hash":"01f9c89cd9dd75b4859a524ef922d724"},{"tool":"promoter_predict","kind":"changed","observed_at":"2026-10-10T19:23:34.639Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"a620fb3637416b706751fc7b72cbe4b2","after_hash":"e431db50c55ddbd45a1a280b32aafb52"},{"tool":"parse_structure","kind":"added","observed_at":"2026-10-09T08:09:52.455Z","fields":[],"description_before":null,"description_after":"Read a PDB or mmCIF structure file — an RCSB PDB entry, or a model from AlphaFold DB, AlphaFold Server or ColabFold — and report what is in it: every polymer chain with its molecule type, name and one-letter sequence (all chains also as FASTA), how many residues have coordinates and which stretches of the sequence do not, bound ligands and waters, and the experimental method and resolution. When the file itself marks its B-factor column as a confidence score (a pLDDT metric, an AlphaFold title, or one value per residue with no experimental method), each chain's mean pLDDT and its stretches below 50 are reported too; otherwise B-factors are left alone. Only the first model of a multi-model file is read. Reads the text; nothing is fetched.","description_similarity":null,"before_hash":null,"after_hash":"82c58eadc5ef404238887d82b685bb53"},{"tool":"sanger_plate_verify","kind":"changed","observed_at":"2026-10-09T08:09:52.455Z","fields":["description","inputSchema"],"description_before":"Judge a whole plate of Sanger reads against one construct and return one row per clone: PASS, POINT_MUTATION, INDEL, VECTOR_ONLY (the insert is absent), WRONG_INSERT (the backbone matches and the insert does not), LOW_COVERAGE, or AMBIGUOUS. Reads are grouped into clones from their FASTA/FASTQ record names (facility conventions like PlateA_A01_pXY-1_M13F, pXY-1_T7-F, 2026-08-01_pXY_clone3_R), and every read's assignment is reported with a confidence so a grouping can be corrected rather than trusted. Each clone's reads are piled up in reference coordinates, so a difference one read reports where other covering reads read the reference is reported as the sequencing error it is, not as a mutation — and a position no read covered is never PASS. Every verdict cites the positions it rests on. Give insertStart/insertEnd to have clones judged over the insert alone, which is also what VECTOR_ONLY and WRONG_INSERT need.","description_after":"Judge a whole plate of Sanger reads against one construct and return one row per clone: PASS, POINT_MUTATION, INDEL, VECTOR_ONLY (the insert is absent), WRONG_INSERT (the backbone matches and the insert does not), LOW_COVERAGE, or AMBIGUOUS. Reads are grouped into clones from their FASTA/FASTQ record names (facility conventions like PlateA_A01_pXY-1_M13F, pXY-1_T7-F, 2026-08-01_pXY_clone3_R), and every read's assignment is reported with a confidence so a grouping can be corrected rather than trusted. Each clone's reads are piled up in reference coordinates, so a difference one read reports where other covering reads read the reference is reported as the sequencing error it is, not as a mutation — and a position no read covered is never PASS. Every verdict cites the positions it rests on. Give insertStart/insertEnd to have clones judged over the insert alone, which is also what VECTOR_ONLY and WRONG_INSERT need. Give the reference as an annotated GenBank record and every difference also says what it does to the feature it lands in (synonymous, missense with its p. change, nonsense, frameshift), with each clone's worst one. Whatever was not read comes back as `rereads`: per unread stretch, the primer to sequence it with — one the map carries, a universal one whose site is on the construct, or a new one designed for it.","description_similarity":0.78,"before_hash":"846233aaa520556c28ac175581c30846","after_hash":"e115d5a9e93b298aa180c6895e7f3a46"},{"tool":"blast_poll","kind":"changed","observed_at":"2026-10-08T01:45:34.963Z","fields":["description"],"description_before":"Check a BLAST search submitted with blast_submit. Returns {ready:false} while it is still running; once ready, returns each hit's accession, title, organism, best HSP (bit score, expect, percent identity, span on both query and subject) and the percentage of the QUERY it covers, with overlapping HSPs merged so coverage cannot exceed 100%. A request id NCBI no longer recognises is reported as either a typo or an expired search, which is the same answer it gives for both.","description_after":"Check a BLAST search submitted with blast_submit. Returns {ready:false} while it is still running; once ready, returns each hit's accession, title, organism, best HSP (bit score, expect, percent identity, span on both query and subject) and the percentage of the QUERY it covers, with overlapping HSPs merged so coverage cannot exceed 100%. A search of several FASTA records also returns `queries`: each record's title, length and hits, in submission order (`hits` is the first record's). A request id NCBI no longer recognises is reported as either a typo or an expired search, which is the same answer it gives for both.","description_similarity":0.844,"before_hash":"c6ee604f7251cffa35b12d1e534ad867","after_hash":"acd4ded85f4ebb496eba8ee82dffe51f"},{"tool":"blast_submit","kind":"changed","observed_at":"2026-10-08T01:45:34.963Z","fields":["description","inputSchema"],"description_before":"Submit a sequence to NCBI BLAST and get a request id back immediately — poll it with blast_poll. The program is inferred from the sequence (nucleotide to blastn, protein to blastp) unless you name one, and a query whose type does not match the named program is refused rather than silently returning nothing. Databases: blastn: nt, refseq_rna (default nt); blastx: nr (default nr); blastp: nr, swissprot (default nr); tblastn: nt (default nt). Up to 20,000 residues. Searches typically take 20-60 seconds; NCBI asks that a single search is polled no more than once a minute.","description_after":"Submit a sequence to NCBI BLAST and get a request id back immediately — poll it with blast_poll. The program is inferred from the sequence (nucleotide to blastn, protein to blastp) unless you name one, and a query whose type does not match the named program is refused rather than silently returning nothing. Databases: blastn: nt, refseq_rna (default nt); blastx: nr (default nr); blastp: nr, swissprot (default nr); tblastn: nt (default nt). typeMaterial: true limits nt to sequences from type material (Entrez sequence_from_type) — what a 16S or ITS read should be identified against, since every hit is then a named species. Up to 20,000 residues per sequence. A multi-FASTA of up to 96 records is ONE search with each record reported separately (blast_poll's `queries`), never one concatenated query. Searches typically take 20-60 seconds; NCBI asks that a single search is polled no more than once a minute.","description_similarity":0.667,"before_hash":"34019f5647540defd862bfa576b876ee","after_hash":"5d0c7191e4e5c09cf08a99ede4dc3b87"},{"tool":"in_silico_pcr","kind":"changed","observed_at":"2026-10-08T01:45:34.963Z","fields":["description"],"description_before":"Predict PCR products for a template and a pair of primers (IUPAC-aware, allows mismatches, handles circular templates). Primers may carry a non-templated 5' tail — a restriction site, a Gibson arm, a Kozak, a tag: a primer primes on its 3' end, and the tail is carried into the product rather than required to match. start/end are the TEMPLATE-derived span, `length` is the whole product including tails, and `features` marks which product bases came from the oligos (present only when there is a tail). Each end reports annealedLength and tailLength.","description_after":"Predict PCR products for a template and a pair of primers (IUPAC-aware, allows mismatches, handles circular templates). Primers may carry a non-templated 5' tail — a restriction site, a Gibson arm, a Kozak, a tag: a primer primes on its 3' end, and the tail is carried into the product rather than required to match. start/end are the TEMPLATE-derived span, `length` is the whole product including tails, and `features` marks which product bases came from the oligos (present only when there is a tail). Each end reports annealedLength and tailLength. When two primers make NO product on a template up to 60,000 bp, `diagnosis` says why: where each primer does prime (with the mismatched bases), which copying mistake explains one that primes nowhere (reversed but not complemented, complemented but not reversed, a base dropped or doubled, a mismatched 3' base) with the sequence that would bind, whether the two point the same way or away from each other, and the product a linear reading missed across the origin of a circle.","description_similarity":0.607,"before_hash":"025623ff35f56205ba41c7d4c1fe7d20","after_hash":"fb5d6b81d8c10e5d0d23859c815a960c"},{"tool":"map_update_from_consensus","kind":"added","observed_at":"2026-10-03T14:26:03.557Z","fields":[],"description_before":null,"description_after":"Write the differences a whole-plasmid sequencing consensus shows into the map, keeping the map's annotation: every feature is shifted, grown or shrunk with the edit, a feature whose boundary an edit cuts is trimmed (and named), and differences in a known nanopore error context (Dam/Dcm methylation sites, long homopolymers) are left out unless keepArtifacts is set. Returns the updated map as a GenBank record and as SnapGene .dna bytes (base64), plus a change log. Use it when the clone is what you want and the MAP is out of date — a change every clone carries, a redesigned primer, a different allele — not to absorb one clone's mutation. `positions` limits the update to those design positions (e.g. only the changes shared by every clone).","description_similarity":null,"before_hash":null,"after_hash":"2f7fad298ffe9196ce12e12fa6fa5fef"},{"tool":"build_route_plan","kind":"added","observed_at":"2026-10-03T14:26:03.557Z","fields":[],"description_before":null,"description_after":"Compare the ways one construct can actually be made — order it whole as a sequence-verified clonal gene, buy only the pieces you cannot amplify, PCR everything out of plasmids you already have, edit one plasmid by mutagenesis, or anneal oligos for a short piece — each costed off a published US list price with the page and the date it was read. It first works out which stretches of the target occur in the templates you give it (either strand, through a circular origin), since the stretch you already hold is the one you do not have to buy. Costs cover ORDERED items only: synthesis, oligos and sequencing. Enzymes, master mixes and competent cells are not costed, because no vendor publishes a price for them without an account and they are much the same whichever route you take. Nothing here predicts whether a reaction will work; each route states its own failure mode instead.","description_similarity":null,"before_hash":null,"after_hash":"89a917c11f41d66b4880bcac2a625ff5"},{"tool":"oligo_order_check","kind":"added","observed_at":"2026-10-03T14:26:03.557Z","fields":[],"description_before":null,"description_after":"Check a list of oligos against the plasmid or template they were designed from, before ordering them. For each oligo: where it primes (3'-anchored, so cloning tails are allowed), on which strand, and which bases disagree with the map. When an oligo primes nowhere it says WHICH copying mistake explains it — reversed without being complemented, complemented without being reversed, one base dropped or doubled, a wrong last base — and gives the sequence that was meant, but only when exactly one such mistake reproduces an oligo that binds. It simulates every product the order can make (up to 15,000 bp) with the in_silico_pcr engine, and for pairs the names declare (GFP_F / GFP_R) says why they make none, including which of the two is written as the wrong strand. Also flags one sequence under two names, one name on two sequences, a primer saved in the map under the same name that sits elsewhere, and 3' self-dimers/hairpins. Up to 96 oligos.","description_similarity":null,"before_hash":null,"after_hash":"2000d08738003c92f3af880e8b7fcc97"},{"tool":"sanger_knockin_quant","kind":"changed","observed_at":"2026-10-03T02:13:41.266Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"b582692219e52bc569c29a09a375e9a7","after_hash":"c90046a16c1fd7b014f647395293331d"},{"tool":"read_placement_plan","kind":"changed","observed_at":"2026-10-03T02:13:41.266Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"af74b8d20a2ac831043b359bbfb8cd54","after_hash":"d6fc8505e1fdb1f12852dd31c285361e"},{"tool":"band_traceback","kind":"changed","observed_at":"2026-10-03T02:13:41.266Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"3bfa0e2e400671d7ed067c663347ab82","after_hash":"1dc872bb8429d2a7feafc0005a0a1450"},{"tool":"repeat_instability","kind":"changed","observed_at":"2026-10-03T02:13:41.266Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"2f19d341da9c807326ee62592c89edd8","after_hash":"7b32db429b1886c112b21fce4340c991"},{"tool":"gel_band_size","kind":"changed","observed_at":"2026-10-02T20:20:55.466Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"15d28985ae6781cffc50b0fd574ef641","after_hash":"20c68b775439d7046376e4c05887e444"},{"tool":"virtual_gel","kind":"changed","observed_at":"2026-10-02T20:20:55.466Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"02ff1198a57ba8b5f9c63a3e90d4a6ad","after_hash":"b1d114cb118b5cc56041bcdf16474ad6"},{"tool":"rna_fold","kind":"changed","observed_at":"2026-10-02T08:01:25.396Z","fields":["description"],"description_before":"Predict an RNA secondary structure by minimum free energy (MFE) using a Zuker dynamic program with Turner 1999 nearest-neighbor stacking energies (no pseudoknots). Returns the dot-bracket structure, the estimated MFE (kcal/mol), and the list of base pairs. A from-scratch, in-browser implementation (there is no usable browser ViennaRNA); the simplified loop energy model makes the MFE a good comparative estimate, not a lab-grade absolute. PREDICTED, NOT MEASURED. No held-out skill statistic is claimed for this implementation. The loop model omits terminal mismatches, dangling ends, coaxial stacking and special hairpins that ViennaRNA and RNAstructure include, so the MFE is a comparative estimate between candidates rather than a lab-grade absolute. Valid for: a single strand up to 1,000 nt (600 nt when folded in the workbench) at a fixed 37 °C, with the usual caveat that any MFE prediction gets less reliable as the strand gets longer. No pseudoknots, no two-strand hybridization, and no temperature dependence — a structure predicted here is not a structure at your annealing temperature.","description_after":"Predict an RNA secondary structure by minimum free energy (MFE) with ViennaRNA's full Turner 2004 loop model at 37 °C (no pseudoknots). Returns the dot-bracket structure, the MFE (kcal/mol), the list of base pairs, and the engine that produced them. PREDICTED, NOT MEASURED. Benchmarks of MFE folding against known structures put single-sequence accuracy near 40-70% of base pairs recovered, falling as the sequence gets longer; no held-out statistic is measured here. The MFE structure is one structure out of an ensemble, and a second structure within a fraction of a kcal/mol of it is common. Valid for: a single strand up to 2,000 nt at a fixed 37 °C (600 nt when folded in the workbench, which runs the fallback engine in the browser). No pseudoknots, no two-strand hybridization — use oligo_cofold for that — and no temperature dependence, so a structure predicted here is not a structure at your annealing temperature.","description_similarity":0.452,"before_hash":"a238fc767668014d82159b48990eb35c","after_hash":"6e05881ca049b357725f261b91b74175"},{"tool":"rna_fold","kind":"changed","observed_at":"2026-09-29T15:05:39.691Z","fields":["description"],"description_before":"Predict an RNA secondary structure by minimum free energy (MFE) using a Zuker dynamic program with Turner 1999 nearest-neighbor stacking energies (no pseudoknots). Returns the dot-bracket structure, the estimated MFE (kcal/mol), and the list of base pairs. A from-scratch, in-browser implementation (there is no usable browser ViennaRNA); the simplified loop energy model makes the MFE a good comparative estimate, not a lab-grade absolute. PREDICTED, NOT MEASURED. No held-out skill statistic is claimed for this implementation. The loop model omits terminal mismatches, dangling ends, coaxial stacking and special hairpins that ViennaRNA and RNAstructure include, so the MFE is a comparative estimate between candidates rather than a lab-grade absolute. Valid for: a single strand up to 600 nt at a fixed 37 °C. No pseudoknots, no two-strand hybridization, and no temperature dependence — a structure predicted here is not a structure at your annealing temperature.","description_after":"Predict an RNA secondary structure by minimum free energy (MFE) using a Zuker dynamic program with Turner 1999 nearest-neighbor stacking energies (no pseudoknots). Returns the dot-bracket structure, the estimated MFE (kcal/mol), and the list of base pairs. A from-scratch, in-browser implementation (there is no usable browser ViennaRNA); the simplified loop energy model makes the MFE a good comparative estimate, not a lab-grade absolute. PREDICTED, NOT MEASURED. No held-out skill statistic is claimed for this implementation. The loop model omits terminal mismatches, dangling ends, coaxial stacking and special hairpins that ViennaRNA and RNAstructure include, so the MFE is a comparative estimate between candidates rather than a lab-grade absolute. Valid for: a single strand up to 1,000 nt (600 nt when folded in the workbench) at a fixed 37 °C, with the usual caveat that any MFE prediction gets less reliable as the strand gets longer. No pseudoknots, no two-strand hybridization, and no temperature dependence — a structure predicted here is not a structure at your annealing temperature.","description_similarity":0.876,"before_hash":"6ded0ff10da7326a652dd1786b0b79c6","after_hash":"a238fc767668014d82159b48990eb35c"},{"tool":"gel_band_size","kind":"changed","observed_at":"2026-09-29T15:05:39.691Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"4eb610130f2f100c131121b4a1c4397e","after_hash":"15d28985ae6781cffc50b0fd574ef641"},{"tool":"virtual_gel","kind":"changed","observed_at":"2026-09-29T15:05:39.691Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f2f2e0138416c570d853bea69f83b44e","after_hash":"02ff1198a57ba8b5f9c63a3e90d4a6ad"},{"tool":"crispr_ontarget","kind":"changed","observed_at":"2026-09-27T04:17:21.561Z","fields":["description","inputSchema"],"description_before":"Score SpCas9 guides for on-target activity with Rule Set 3 (DeWeirdt et al., Nat Commun 2022) — the current successor to the Doench 2014 and CRISPRscan scores crispr_grna_design reports. Give a target sequence to find and score every NGG guide in it, or give 30-mer contexts directly. The tracrRNA MATTERS and is not cosmetic: Rule Set 3 models it as a feature, and the paper measures its accuracy dropping when the wrong one is specified. Returns a z-scored activity, which ranks guides against each other; it is not a percentage and not a probability of editing. PREDICTED, NOT MEASURED. Held out six datasets (23,629 context sequences) from training; Rule Set 3 (Sequence) had the highest Spearman correlation on three of the six. On a separate tiling library generated for the paper, with every spacer any model had seen removed, it significantly outperformed all other models (p < 0.002) when the correct tracrRNA was given. Calibration on that independent set: of the lowest-scoring guides, 87.7% / 74.9% / 82.0% landed in the bottom two activity quintiles (Hsu / Chen / DeWeirdt tracrRNA), and of the highest-scoring, 77.0% / 69.0% / 75.5% landed in the top two. No single held-out Spearman is quoted here because the paper reports it per gene as a distribution rather than as one figure, and inventing a headline number from a figure would be the fit-residual mistake in a different costume. Valid for: SpCas9 with an NGG PAM and a 20 nt spacer, scored over a 30-mer (4 nt upstream + spacer + PAM + 3 nt downstream) — nothing is padded, so a guide without that flank is skipped rather than estimated. Knockout activity in mammalian pooled screens with a U6/Pol III promoter; the authors expect it to generalize less well to Pol II-transcribed sgRNAs, and in vitro transcribed sgRNAs (as used in zebrafish) are known to be poorly predicted by models trained this way. The tracrRNA must be the one you will actually use. This is Rule Set 3 (Sequence) only: the Sequence+Target model, which adds 6.7% to the Spearman correlation on average, needs per-gene conservation and protein-domain lookups and is not implemented here.","description_after":"Score SpCas9 guides for on-target activity with Rule Set 3 (DeWeirdt et al., Nat Commun 2022) — the current successor to the Doench 2014 and CRISPRscan scores crispr_grna_design reports. Give a target sequence to find and score every NGG guide in it — on both strands unless `searchReverseStrand` says otherwise — or give 30-mer contexts directly. The tracrRNA MATTERS and is not cosmetic: Rule Set 3 models it as a feature, and the paper measures its accuracy dropping when the wrong one is specified. Returns a z-scored activity, which ranks guides against each other; it is not a percentage and not a probability of editing. PREDICTED, NOT MEASURED. Held out six datasets (23,629 context sequences) from training; Rule Set 3 (Sequence) had the highest Spearman correlation on three of the six. On a separate tiling library generated for the paper, with every spacer any model had seen removed, it significantly outperformed all other models (p < 0.002) when the correct tracrRNA was given. Calibration on that independent set: of the lowest-scoring guides, 87.7% / 74.9% / 82.0% landed in the bottom two activity quintiles (Hsu / Chen / DeWeirdt tracrRNA), and of the highest-scoring, 77.0% / 69.0% / 75.5% landed in the top two. No single held-out Spearman is quoted here because the paper reports it per gene as a distribution rather than as one figure, and inventing a headline number from a figure would be the fit-residual mistake in a different costume. Valid for: SpCas9 with an NGG PAM and a 20 nt spacer, scored over a 30-mer (4 nt upstream + spacer + PAM + 3 nt downstream) — nothing is padded, so a guide without that flank is skipped rather than estimated. Knockout activity in mammalian pooled screens with a U6/Pol III promoter; the authors expect it to generalize less well to Pol II-transcribed sgRNAs, and in vitro transcribed sgRNAs (as used in zebrafish) are known to be poorly predicted by models trained this way. The tracrRNA must be the one you will actually use. This is Rule Set 3 (Sequence) only: the Sequence+Target model, which adds 6.7% to the Spearman correlation on average, needs per-gene conservation and protein-domain lookups and is not implemented here.","description_similarity":0.972,"before_hash":"31229deebd4b25c956a598cc10c716f1","after_hash":"4b17c44c92a111e465e07bc25814f584"},{"tool":"solution_prep","kind":"changed","observed_at":"2026-09-25T04:25:29.392Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"74d65425c43b0ab23dd820dfba8aecf5","after_hash":"b83751165664352701f2dbc109191c0d"},{"tool":"centrifuge_conversion","kind":"changed","observed_at":"2026-09-25T04:25:29.392Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"5f17d6027fcdcf445c24a87f65403e96","after_hash":"1336b6057bdade93e3e376a56451ac1a"},{"tool":"blast_submit","kind":"changed","observed_at":"2026-09-25T04:25:29.392Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"0869ad8b2cffb2634b62e858a5de947f","after_hash":"34019f5647540defd862bfa576b876ee"},{"tool":"cpg_islands","kind":"changed","observed_at":"2026-09-25T04:25:29.392Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"0a55e1748746a3998ea40eb6235a7446","after_hash":"e459c2c043af06bb7db9255e534f20e8"},{"tool":"annealing_temperature","kind":"changed","observed_at":"2026-09-25T04:25:29.392Z","fields":["description","inputSchema"],"description_before":"Annealing temperature and a full cycling program for a primer PAIR, under the rule the polymerase's own vendor publishes — which is not one rule. Q5 and Phusion anneal 0–3 °C ABOVE the lower primer Tm, NEB's Taq-family products 0–2 °C below it, Toyobo KOD One at Tm − 5, and Takara PrimeSTAR Max at a FIXED 55 °C that the primer Tm plays no part in. The Tm is computed by the method that vendor's rule is defined against (nearest-neighbor, at the vendor's own stated salt and oligo concentration where it states them; PrimeSTAR Max's published 2(A+T)+4(G+C)−5), so the number fed to the rule is the one the rule means. Returns denaturation/annealing/extension steps, cycle count, magnesium guidance, the vendor document each figure came from, and the same primers under every other polymerase in the table for comparison.","description_after":"Annealing temperature and a full cycling program for a primer PAIR, under the rule the polymerase's own vendor publishes — which is not one rule, and is only defined against the vendor's own Tm. For NEB products the Tm is computed exactly as NEB's Tm calculator computes it (SantaLucia 1998 nearest-neighbor with NEB's salt correction, at that product's own buffer and primer concentration — the same primer's Tm moves ~10 °C between NEB buffers) and NEB's calculator rule is applied to it: Q5 at Tm + 1, Phusion at 0.93 × Tm + 7.5 (both ABOVE the Tm), Taq/OneTaq/LongAmp at Tm − 5, Vent/Deep Vent at Tm − 2 above 20 nt, with NEB's ceilings. Toyobo KOD One is Tm − 5 at the salt and oligo concentration its manual names, Takara PrimeSTAR Max a FIXED 55 °C the primer Tm plays no part in (its own 2(A+T)+4(G+C)−5 sets only the annealing time), and a generic Taq/Pfu row applies the Tm − 3 to − 5 rule of thumb to a default-condition nearest-neighbor Tm. Returns denaturation/annealing/extension steps, cycle count, magnesium guidance, the Tm basis and vendor document behind each figure, and the same primers under every other polymerase in the table for comparison.","description_similarity":0.566,"before_hash":"bc90ae8a201b1215bb1267a44cc05d54","after_hash":"7ea59cc56c7972353fffb749f6d43d3f"},{"tool":"whole_plasmid_verify","kind":"added","observed_at":"2026-09-24T17:03:41.495Z","fields":[],"description_before":null,"description_after":"Compare a whole-plasmid sequencing CONSENSUS (the single circular FASTA a nanopore plasmid service returns) against the design it was supposed to be, and say whether they are the same molecule. Finds the rotation and strand itself — an assembler starts the circle wherever it landed and half the time returns the reverse complement, so the two almost never line up as written — then reports every difference in the DESIGN's own coordinates. Each difference carries the length of the identical-base run it sits in, because a 1 bp indel inside a homopolymer is both the commonest long-read basecalling artefact and what a real slippage mutation looks like, and a bare difference list cannot tell them apart. Pass the design as an annotated GenBank record and every difference is also read against its features: silent, missense with the codon number, or a premature stop. Complements sequencing_readback_verify, which aligns raw READS through minimap2; this one needs no reads and no sidecar.","description_similarity":null,"before_hash":null,"after_hash":"a286eb24f1294a4914a4b8e15a79d821"},{"tool":"plasmid_dossier","kind":"added","observed_at":"2026-09-24T17:03:41.495Z","fields":[],"description_before":null,"description_after":"Answer the question someone holding an unlabelled tube actually has, rather than returning another feature list: which antibiotic to select on, which host will carry it and at roughly what copy number, which curated backbone it resembles, and what on it will bite you later (duplicate markers, two origins for the same host, internal Type IIS sites that stop it being a Golden Gate part, long direct repeats a recA+ host can recombine out). Reads features from an annotated GenBank record when you paste one, otherwise runs the built-in signature scan. EVERY ABSENCE TRAVELS WITH THE VOCABULARY IT WAS DECIDED AGAINST: an empty marker list means nothing matched the families this screen knows, never that the plasmid cannot be selected — run plasmid_deep_annotate, whose library is far larger, before concluding that.","description_similarity":null,"before_hash":null,"after_hash":"5c1666801eb359d3349e075d7f1264a9"},{"tool":"qpcr_ddct","kind":"changed","observed_at":"2026-09-24T17:03:41.495Z","fields":["description"],"description_before":"Relative quantification from Ct values: ΔCt, ΔΔCt and fold change, with the standard deviation propagated from replicates. Picks the method from the amplicon efficiencies rather than leaving it to you — Livak's 2^-ΔΔCt when both are 100% efficient, the Pfaffl efficiency-corrected ratio when they are not, since running Livak over amplicons that do not qualify is the failure this tool exists to prevent. Reports what Livak would have said, so the size of that difference is visible.","description_after":"Relative quantification from Ct values: ΔCt, ΔΔCt and fold change, with the standard error propagated from replicates. Picks the method from the amplicon efficiencies rather than leaving it to you — Livak's 2^-ΔΔCt when both are 100% efficient, the Pfaffl efficiency-corrected ratio when they are not, since running Livak over amplicons that do not qualify is the failure this tool exists to prevent. Reports what Livak would have said, so the size of that difference is visible.","description_similarity":0.968,"before_hash":"c7f91093dd25684ae84405520d72c7b4","after_hash":"9dd2d34e74ebc15db3e0125e4b0a2dd0"},{"tool":"codon_adaptation_index","kind":"changed","observed_at":"2026-09-24T17:03:41.495Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"65aaa222b9d2a7ff9aa8bd5cc54f9c23","after_hash":"6c60f8c4ccb6823594a3e5eaaedbe6c8"},{"tool":"gel_band_size","kind":"added","observed_at":"2026-09-24T17:03:41.495Z","fields":[],"description_before":null,"description_after":"Calibrate a gel lane against a marked DNA ladder and read the size of any other band from how far it ran. Migration distance is approximately linear in log(size) over a gel's resolving range, so a least-squares line through the marked rungs interpolates between them — and NOT outside them, which is why a band beyond the marked span comes back flagged `extrapolated` rather than quietly clamped to the nearest rung. Reports R² and the per-rung residual, because one mis-marked rung (a doublet marked as one band, a mis-clicked centre) shifts every size on the gel and a single R² hides it. Distances may be in pixels, millimetres or anything else, as long as they are all measured the same way from the same reference line.","description_similarity":null,"before_hash":null,"after_hash":"4eb610130f2f100c131121b4a1c4397e"},{"tool":"annealing_temperature","kind":"added","observed_at":"2026-09-24T17:03:41.495Z","fields":[],"description_before":null,"description_after":"Annealing temperature and a full cycling program for a primer PAIR, under the rule the polymerase's own vendor publishes — which is not one rule. Q5 and Phusion anneal 0–3 °C ABOVE the lower primer Tm, NEB's Taq-family products 0–2 °C below it, Toyobo KOD One at Tm − 5, and Takara PrimeSTAR Max at a FIXED 55 °C that the primer Tm plays no part in. The Tm is computed by the method that vendor's rule is defined against (nearest-neighbor, at the vendor's own stated salt and oligo concentration where it states them; PrimeSTAR Max's published 2(A+T)+4(G+C)−5), so the number fed to the rule is the one the rule means. Returns denaturation/annealing/extension steps, cycle count, magnesium guidance, the vendor document each figure came from, and the same primers under every other polymerase in the table for comparison.","description_similarity":null,"before_hash":null,"after_hash":"bc90ae8a201b1215bb1267a44cc05d54"},{"tool":"hgvs_convert","kind":"changed","observed_at":"2026-09-24T11:00:00.591Z","fields":["description","inputSchema"],"description_before":"Parse an HGVS \"c.\" variant description (by gene symbol, RefSeq NM_, or Ensembl ENST accession), convert it to genomic (g.) coordinates via a real, live-fetched Ensembl exon/CDS map (transcripts resolved through the bundled MANE RefSeq<->Ensembl crosswalk), apply 3'-rule normalization to any del/dup/ins, and predict the protein (p.) effect where that is safely computable. Refuses cleanly — rather than guessing — for circular/mitochondrial genomes, RNA-level or protein-level input, uncertain/mosaic syntax, splice-junction-adjacent or inversion protein effects, and non-MANE/non-Ensembl transcripts.","description_after":"Parse an HGVS \"c.\" variant description (by gene symbol, RefSeq NM_, or Ensembl ENST accession), convert it to genomic (g.) coordinates via a real, live-fetched Ensembl exon/CDS map (transcripts resolved through the bundled MANE RefSeq<->Ensembl crosswalk), apply 3'-rule normalization to any del/dup/ins, and predict the protein (p.) effect where that is safely computable. Also accepts a genomic \"g.\" position on a chromosome or RefSeqGene (NC_/NG_, GRCh38 or GRCh37): it is validated and placed on GRCh38 by NCBI, projected onto the MANE Select transcript by Ensembl, and converted back by this tool's own engine, which must agree — so the answer rests on two independent conversions. And the \"NC_/NG_(NM_…):c.\" form converts on the transcript in parentheses. Refuses cleanly — rather than guessing — for circular/mitochondrial genomes, RNA-level or protein-level input, uncertain/mosaic syntax, splice-junction-adjacent or inversion protein effects, and non-MANE/non-Ensembl transcripts.","description_similarity":0.67,"before_hash":"493237a9cf183f6343a35bec51fe4a1b","after_hash":"dd406e3ec04a84b1628b175cb6cc1d04"}],"next_before":"29780","next_actions":[{"action":"list_changes","description":"Older changes","href":"/v1/servers/com.seqbench%2Fworkbench/changes?before=29780&limit=50"}]}