2,002 Escherichia coli genomes · PanGBank 11587 · Bacformer

PanGramGraph

github.com/ggautreau/PanGramGraph

The gene order of E. coli across all 2,002 genomes of the species in PanGBank, read gene by gene from : where strains carry the same genes in the same order, and where they part ways (islands, prophages, operons that some strains lack). At every position an AI trained on bacterial genomes, Bacformer, guesses the next gene; the page shows where it is right, where it doubts, and what it has not learned.

The page in three pictures

  1. One genome drawn as a row of genes, dnaA, dnaN, recF, gyrB, yidB and on, numbered from 0 at dnaA one genome, from the origin of replication dnaA dnaN recF gyrB yidB … 012 34 position, counted in genes from dnaA →

    1A genome is a sentence of genes. Read from dnaA, beside the origin of replication, an E. coli chromosome is some 4,500 genes in a row.

  2. The genomes overlaid: all pass through yidX, then 1,231 go into the dgo operon and 160 go straight from yidX to cbrA: a fork yidA yidX dgoR dgoK cbrA 1,231 genomes 160 genomes, no dgo a fork in nearly all in some

    22,002 genomes overlaid make a graph. One box per gene family, a line where two genes sit side by side, thicker when more genomes share it, and a fork where strains carry different genes.

  3. The model reads dnaA, dnaN, recF and suggests the next gene like a phone keyboard: gyrB first. Near dnaA one clear choice; in an island, several gyrByidB… dnaA dnaN recF ? near dnaA: sure in an island: hesitant

    3A language model guesses the next gene. Bacformer, trained on bacterial genomes, reads a genome’s proteins in order, each as its sequence, and suggests the next gene, like autocomplete on a phone: right 9 times in 10, sure near dnaA, hesitant where genomes vary.

Why it matters to a microbiologist. Gene order carries biology: operons, and the insertion sites of islands, prophages and virulence genes. Seen across a whole species, next to what an AI has and has not learned of it, it shows where such models can be trusted to read a genome, and where not yet. The AI also tells lineages apart from small sequence differences in conserved genes, which a pangenome graph, one box per family, cannot see.

Start with a question

Each question sets the page below up for one example, and answers in a line. For the controls themselves,

What we learned

    The graph

    hover a box · click to pin · drag to move · Shift + wheelwheel to scroll along · Ctrl + wheel to zoom
    20
    The whole chromosome, from dnaA, in genes: the map of the 540 complete chromosomes among the 2,002 genomes (drafts come in pieces). The frame is the window shown: drag or swipe it, or click anywhere, to open the window there. share of genes in a region of plasticity
    a guess of the model that no genome has there (faint: a long shot) line width: how many genomes share the link (log scale) a box sits at its family’s most common column; a line running back leftwards: a family some genomes carry further on; a line running under boxes: genomes that skip them grey bars on top: the model’s surprise, its perplexity, at each column; hover one click a box to keep only its links

    Help

    Quick start

    1. What you see. Every E. coli genome of PanGBank, read gene by gene from dnaA, overlaid as a graph (Graph tab), and at every position the guess of Bacformer, a language model trained on bacterial genomes.
    2. Read a box. Hover it, or tap it on a phone: its card says how many genomes carry it, what comes before and after, and what the model expects next. Click to pin it and compute the model’s guess in a genome you pick.
    3. Ask the model. Draw a path: click boxes in order and the model gives what it expects next after exactly that order, including one no genome carries.
    4. Move along the chromosome. Drag the frame of the map above the graph, press Next, or search a gene (lacZ, eae, stx2A).
    5. Read the window. Findings says in words what the model gets right and wrong in the window shown; Coupled regions shows accessory genes that travel together, and that the model does not know as pairs.
    6. Words. A word underlined with dots has a short definition: hover it, tap it or reach it with Tab. All of them are in the Glossary.

    five steps over the page itself; the questions at the top of the page each set it up for one example, with its answer.

    The graph

    Left to right
    position along the chromosome, counted in genes, not base pairs: from dnaA (column 0) in the dnaA window, from the window’s first gene elsewhere.
    A box
    one gene family of the PanGBank pangenome, at the column where it most often sits. Boxes stacked in a column: the genomes disagree there, the most common on top. That is a fork.
    Colour
    PPanGGOLiN’s partition of the species: orange persistent, green shell, blue cloud.
    Solid line
    an adjacency some genomes carry; thicker means more genomes (log scale). A line that dips into the gap under a row and runs there skips the boxes above it: after yidX, 160 genomes go straight to cbrA, under the dgo operon they do not carry.
    Dashed box
    a guess of the model right after the best-carried family of a column that follows it in no genome. Up to two per column, drawn faint when the model gave it little probability: most are long shots (under 0.1%); a few are real expectations, some of them a repeat of the gene just read, where the model’s vocabulary lumps two paralogs together. Its card gives the probability. Show the model’s guesses no genome has hides them.
    Genomes carrying
    the slider hides families carried by fewer genomes.
    Bars on top
    the model’s perplexity at each column, on the family actually there in each genome: 2 to the power of the mean surprise, −log2 P. 1 means always certain and right; 2 is as unsure as a coin toss between two families. Hover a bar, or anywhere in its column above the boxes, for its detail, including 2entropy, the number of families the model hesitates between. P is read through the decoder (see Exploring); a family none of the model’s 15 best clusters reads as (1.5% of calls) gets the probability of the 15th, so the value errs on the low side.
    Fewer genomes on the right
    draft assemblies stop where their contig stops: in the dnaA window 2,000 genomes reach column 3, 1,359 reach column 79.

    Exploring

    Hover a box
    a card opens beside it: the family across the genomes, what follows it, and the model’s call after it, averaged over every genome that carries it. It opens when the pointer moves onto a box, not when the page scrolls under a still pointer, and while it only previews it lets the pointer through to the boxes under it: click the box to pin the card and use it. On a touch screen, tap the box instead: its card opens pinned, at the bottom of the screen on a phone.
    The model’s doubt
    a card gives two numbers for the column: perplexity, the model’s surprise at the gene actually there, and entropy, in bits, how spread its own guess is. They differ when the model is sure but sometimes wrong (low entropy, higher perplexity), as at yidX, where strains part ways.
    Click a box
    pins the card and computes the model’s exact call in one genome, with a search for any family at that position. Draw from this path starts a path from that genome’s own proteins. Needs the model’s server.
    Two counts
    a card counts the family twice. In this window: the genomes (beyond the dnaA window, the complete chromosomes) in which it falls inside the window, and the column where it most often sits. In the pangenome: the genomes of PanGBank’s 2,002 that carry it anywhere, and its partition, persistent, shell or cloud, which PPanGGOLiN computed over all of them (beyond the dnaA window, also the complete chromosomes that carry it). A persistent family can be in few genomes of a window: in the others it lies outside it, often just before its first column or past its last; Where they carry it then opens the window that shows it in most of them. bcp in the nudK window: 26 of 537 chromosomes there, 1,997 of 2,002 genomes in the pangenome, persistent.
    Previous and next gene
    the families right before and right after it in the window’s genomes, most carried first, with how many genomes carry each pair. They follow the reading direction (see Along the chromosome): the gene a map shows after it may be in its Previous list. A family at the window’s first column has none before it here (at its last, none after it): Show it in the previous window (or next) opens the window beside, which has them, with its card there. bcp is the first column of its own window; the previous window shows hyfA before it.
    Family names
    on a card (its lists, the model’s call after it, a genome’s live call and its search) and under a drawn path, the name of a family of the window shows its box: the Genomes carrying slider is lowered if it hides it (it goes back to your setting at the next name you follow that it shows, or in another window), the graph scrolls to it, the box flashes and its card is pinned. While you draw a path, the box flashes, the path stays and a preview card gives way to the box. A name with → is a gene the model names that no family of this window reads as: it opens the window where the complete chromosomes carry it, and shows it there; that needs the model’s server, and the new window starts a new path. The browser’s Back returns to the window as you left it, with its card pinned or its path drawn. A name that is not underlined is one of the model’s clusters with no family here and no gene name of the complete chromosomes; hover it for why. From the keyboard, Tab reaches each name and Enter follows it. Tags beside a name: 4 clusters, four of the model’s clusters read as that family, their probabilities added; other cluster, a cluster named like a family above it but not read as it here (two rows can then carry one name); never here, a guess no genome carries at that place; not read here or not in this window, a cluster no family of the window corresponds to. A family named fam… has no gene name in PanGBank; its product is that of the family’s representative protein, and a family can group variants (the intimin family holds several intimin types).
    Pick a genome
    the genome box lists, before you type, genomes that carry the family (tagged carries it), then, under a line, well-known strains, which may not. Strain names are the submitters’: an ETEC… name is theirs, not a pathotype this page computed (hybrids exist, such as the Stx2e-producing ETEC of pigs). Type any mix of strain, serotype (O157, H7), sequence type, host, isolation source, country, year or accession: every word must match (human urine, shigella, cattle 2012). The words come from PanGBank’s metadata, which give a serotype for about 1 genome in 10 and a sequence type for about 1 in 40. ↑ ↓ move, Enter picks, Esc gives the previous choice back. Beyond the dnaA window drafts are greyed out: only the complete chromosomes are read there.
    Probabilities
    the softmax of the model’s output over its 50,000 clusters, as percentages. They are not p-values.
    Decoder
    the model predicts its own clusters, not PanGBank families. A cluster is read as the families actually present when the model predicts it, P(family | cluster), learned on one half of the genomes and applied to the other. An exemplar bank of 9,814 clusters, used before, misses many of them. Clusters read as the same family share one row, their probabilities summed (4 clusters).
    The header and PanGBank
    the header gives the pangenome as PanGBank built it (genomes, genes, families by partition, edges, regions of plasticity and their spots, modules), with a link to it on PanGBank, and the model’s two headline numbers on the dnaA window; the github.com/ggautreau/PanGramGraph link is the code. A pinned card links the genome it was computed in to that genome’s page on PanGBank (… in PanGBank). PanGBank has no page per family: copy the family name copies it, to look it up in the pangenome’s files.

    Drawing a path

    Draw
    switch the graph to Draw a path and click boxes in order, or press on a box and slide across the next ones in one stroke, as on a phone keyboard; the trace follows the pointer. Slide back to erase; slide up or down a column to change the choice there. On a touch screen a finger does the same (tap, or slide across the boxes); while drawing, a finger on the graph’s background moves the graph.
    The model’s call
    for the family after exactly that sequence of proteins, when you release. Every box glows by how likely its family is to come next; the 12 likeliest carry their probability. Any order is allowed, including one no genome carries (a dotted arrow ⇢ between two steps of the path): that is how to ask the model about a combination it has never seen. In the table of the call, + add puts a family’s box at the end of the path; Find a family after this path gives the probability and rank of any other.
    Little context
    with one or two proteins the model has hardly anything to go on: it cannot tell which way it is reading and may name the neighbour on the other side (lacZ alone: not lacY first, but lacI, its neighbour on the other side). Take a genome’s path (below) to give it the genes before. A box’s label is the probability that its family comes next, the same figure as in the table: the model’s clusters for that family, each weighed by how often it stands for it (the decoder).
    Edit
    drag a box of the path onto another box to change that step, or off the graph to remove it; Esc cancels. Undo reverts the last change, a whole stroke included. Start again at dnaA (at the window’s first family elsewhere) clears the path back to that one box.
    A genome’s path
    pick a genome in the Genome box, then click a box: the path becomes that genome’s own proteins up to it (Take a genome’s path up to the box); with no genome picked, the first genome that carries the box is taken. In a window beyond dnaA the model also reads, unseen, the 400 proteins before the window in that genome.
    Attention
    the Attention button opens the Attention tab on the path.

    Along the chromosome

    The map
    under the bar, the complete chromosomes from dnaA, in genes, shaded by the share of genes in a region of plasticity. The frame is the window shown: drag it along, swipe it sideways with a finger or two on a trackpad, or click anywhere; the window opens where the frame is left. With the map selected, → or ↑ moves to the next window and ← or ↓ to the previous one, PgUp 500 genes on and PgDn 500 genes back, Home back to dnaA and End to the last window.
    The bar above the graph
    Previous and Next (keys P and N) move 60 genes at a time: a window shares 20 columns with the next. The search box suggests every gene name of the complete chromosomes, with its place; it also takes a PanGBank family or a position from dnaA (1500). Names are as the chromosomes were annotated, so synonyms (stx2A, stxA2) are listed apart, and a gene’s place is its median over the chromosomes that carry the name: a gene at several sites, such as a phage gene, can sit between them; its window then says where else it is. When a box is too rare for the Genomes carrying slider, the slider goes down to show it, and says so beside it with the way back. A gene already in the window is shown there, otherwise its window opens. dnaA window returns here. A link to a place: pangramgraph.html#at=lacZ.
    Reading direction
    every window, the dnaA window included, reads the genomes from dnaA in the direction dnaA is transcribed, the order the model reads them in: columns, the Previous and Next genes of a card and a drawn path all follow it. Maps of E. coli K-12 number the chromosome the other way, so neighbours come here in the reverse of their map order: most chromosomes read hyfA, bcp, gcvR, which the K-12 map lists as gcvR, bcp, hyfA.
    Which genomes
    beyond the dnaA window only the 540 complete genomes are in one piece and have the model’s call at every gene, so a window elsewhere is read in them. It starts at a backbone family, present once in at least 95% of the chromosomes, and walks 80 genes in dnaA’s direction. The page’s server builds it in about two seconds. Findings follow the window shown: its tables, and its reading (see Findings and About).

    Attention

    What is read
    the path drawn in the Graph tab, and, for a genome’s own path in a window beyond dnaA, the 400 proteins before it (one column, summed). Without a path, the tab offers the first ten genes of the window.
    The heads
    Bacformer has 12 layers of 8 heads. The map gives one cell per head, coloured by how far back it looks on average among the path’s proteins, or by its share on the previous protein, the start token or the protein itself. Click a cell to show that head’s matrix.
    The matrix
    rows are the path’s proteins, columns what each one attends to; causal, so nothing above the diagonal. Leave the start token out (on by default) hides the attention sink and renormalises each row over the rest. Colour on a square-root, linear or log scale.
    Where it comes from
    Take the first ten genes of this window fills the path of the Graph tab without changing what a click there does; the path shows when you switch the graph to Draw a path.
    The last row
    for every layer and head: where the model looks when it calls the next family.
    How far to read it
    attention shows where the model looks, not why it calls what it calls; heads that rest on the start token are often idle, not blind. Computed live by the model’s server.

    Coupled regions

    In short
    the box at the top of the tab says it in plain words: accessory elements far apart do travel together in the genomes, beyond shared ancestry, and the model does not know these pairs; what a deletion moves is its expectation of all the accessory content downstream. The corrections to earlier versions of the tab are folded under the notes.
    What is shown
    accessory gene families in different insertion spots whose presence goes together (arcs above the chromosome) or apart (dashed, below) within lineages and within tertiles of accessory content, beyond a permutation null. An element is a cassette of an insertion spot that comes and goes as one; a set is a community of co-occurrence links. These tests read the presence of genes, not the model, in the 281 complete genomes that belong to a lineage cluster of at least 4 (of the 540).
    Two layers
    Long range: elements more than 500 genes apart (533 links). Close range: 50 to 500 genes apart in the genomes carrying both, in separate insertions (113 links), where the model’s use of the context is strongest; a pair on both sides of dnaA is drawn the short way round, leaving the map at both ends. Arcs join the elements’ median positions; a link’s detail also gives how far apart the two sit in the genomes carrying both (when fewer than 10 genomes do, as for most close-range avoidance links, only the median positions). The map, the three lists (sets, links, elements) and the detail work on either; the lists are also the way in on a phone and from the keyboard (arrow keys, Enter).
    Colours and lines
    with model verdict, an arc’s colour is what the model says about the link (below), and the elements are grey; with set, the set of its two ends. The line says what the link is in the genomes: solid co-occurrence, dashed avoidance, dotted one element at several spots. Click a legend entry to hide or show its arcs; the legend counts the links the filters keep.
    Filters
    only links replicated in lineage-disjoint halves (see A correction below); links behind at least 1, 2, 5 or 10 family pairs, since a link that rests on one pair can be chance; avoidance shows or hides the dashed links below the chromosome.
    The detail
    a set lists its elements, then the presence of their coupled families in the complete genomes (a column per genome, in cgMLST order, with a line between lineage clusters; hover for a genome) and its strongest links. A link says what it is in the genomes, then what the model says of it; its What the model does without … buttons open either element. An element lists its links and its presence beside theirs. graph opens an element’s place in the Graph tab. The address in the browser follows the choice (#tab=regions&rl=close&rs=…): copy it to show someone the same layer, set, link or element.
    What the model says
    an in-silico knockout of Bacformer on the complete chromosomes, in full precision: in each genome carrying both elements (or one, for avoidance), the element that comes first from dnaA is deleted and the model’s probability of the other element’s first family is read again, against deletions of other whole accessory elements of about the same size and distance, with each genome read by a decoder learned on the other lineages. knows: the other element moves the way the genomes go, more than under control deletions, in both halves of the lineages, and more than the other elements the same deletion moves (specificity, in z and in raw units). not specific: it moves the way the genomes go, or the opposite way, but no more than everything else downstream; the deletion shifts the model’s expectation broadly. opposite: a specific move against the genomes. none: no move that passes the tests either way; the detail says which condition failed. not testable: fewer than 5 lineages, no readout, only partial deletions, too few matched control deletions, or no calibration.
    How far to trust each verdict
    knows is the strongest claim: calibrated on pseudo-deletions and corrected over the tested links, and it holds in two lineage-disjoint halves. Even so, a knows can come from genomic background rather than from the pair: the only one, espX1 → chpB, is such a case (its detail says why). not specific shows the model uses distant content, not that it knows the pair. none is only as strong as its smallest detectable effect and its distance: the model’s use of context decays (a 2-gene deletion moves the call of a gene 10 genes on by 0.044 in logit, 100 genes on by 0.014, 1,000 genes on by 0.006), so a none tested beyond 500 genes means the test could not see it, not that the model ignores the link. not testable says nothing. The full runs: at long range, 298 of the 533 links could be tested: 0 knows, 41 not specific (20 the genomes’ way, 21 the opposite way), 1 opposite and 256 none; at close range, 47 of the 113: 1 knows (explained by genomic background), 14 not specific (3 the genomes’ way, 11 the opposite way), 1 opposite and 31 none. The detail of a link gives every number: genomes tested, lineages, the median effect overall and in each lineage half, the share tested within the model’s range, the smallest detectable effect and the q values each verdict was decided on.
    A correction
    an earlier version of this tab called a link replicated when it held in two halves of the genomes, but those halves shared lineages (6 of the 8 lineage clusters were in both). With lineage-disjoint halves, 267 of the 533 long-range links replicate; only links replicated in lineage-disjoint halves shows those (on by default), and the sets list greys the sets left with none. Every close-range link was selected that way.
    A second correction
    the first knockout run called 7 long-range links known. All seven fell when an error in the calibration of the specificity test in raw units was fixed (its pseudo-deletions were not centred within each tested genome). An independent re-derivation matches every verdict of the corrected runs shown here.
    One element at several spots
    when, in the genomes carrying both, a copy of each sits in one spot, the “link” is one element that lands at different places in different genomes, not two regions that go together (110 long-range links, 4 close-range ones). Flags in a link’s detail also say when the two lie under 100 genes apart (possibly one transfer tract), in separate insertions, or share an insertion site.
    Without an element
    click an element, pick a genome carrying it at its spot, and Delete it and read the model: the model’s server deletes it, then 8 whole accessory elements of about its size in turn, and draws the mean change of the model’s expectation per 25 genes out to 1,500 genes downstream, against the controls’ range. A close-range element is deleted as an element of the close-range sets, and its links are the close-range ones. specific: some elements downstream move differently from the others at their distance (q < 0.05); broad: none does, while the deletion moves the model more than a typical one; like a control deletion: none does, and it moves the model no more than a random element of its size. An element near the end of the chromosome, with too few genes after it to compare with the controls, gets neither. Each linked element is then placed: read, with its change and whether it goes the way the genomes go, or before the element (the model reads from dnaA on), beyond 1,500 genes, not at its spot, or absent. The elements downstream are listed by distance or by q. A few seconds on a GPU; on a CPU, as on the public Space, under a minute, with the progress shown; a computation keeps running if you look at something else meanwhile.

    Findings and About

    What Findings show
    the window shown in the Graph tab: the dnaA window of the 2,002 genomes, or a window of the 540 complete chromosomes. First the genes of note in it, sorted by their names and products (phage, mobile DNA, toxins, secretion systems, adhesins, surface polysaccharides, iron uptake, resistance, CRISPR), each a link to its box; then a reading of the window, then tables of the model’s calls, each joined to the gene actually at that position: its PPanGGOLiN partition, and whether panRGP places it in a region of plasticity.
    The tables
    model top-1: how often the model’s first choice is the family actually there, read in its own vocabulary through the decoder (see Exploring); via the exemplar bank: the older reading, which underestimates it, computed for the dnaA window only and shown on request; entropy: the model’s hesitation, in bits. The last table follows the columns of the window. The checks against position, genome and the graph were run on the dnaA window.
    Three readings
    hand-written: the dnaA window’s, by the author. automatic: written by rule from the window’s own data, shown at once in every other window: a spine is one family in 90% of genomes or more at every column, a fork a second family in 10% or more, a variable stretch neither. DeepSeek-V4.1-Flash: a language model called by the page’s server writes the window up from facts the server computes from its own data (columns, families and products, partitions, regions of plasticity, the model’s calls); the page sends only which window. It follows a written skill, reading_skill.md (version 2, with prompt r9), on what the words of the pangenome and the model’s numbers mean. It describes the window’s numbers more than the biology of its genes: the genes of note above it, and the boxes’ cards, say what the genes are.
    How that reading is checked
    every sentence cites the facts lines it is written from, and the server checks it against those lines: each number must be one they show, in the sense the sentence gives it (a share of genomes, a share in regions of plasticity, a share named, a hesitation), for the genes or columns it names, and each gene and column must stand in them; a sentence that does not hold is left out. The check does not verify the wording. Shaded passages are the writing language model’s interpretation (not Bacformer’s) of gene names and products, checked to fit most of the genes they cover, which the window does not measure. The line under the reading says who wrote it, when, and what was checked.
    When it is written
    112 windows have a reading written in advance, which comes back at once; the others are written on request, in about ten seconds, and new ones are limited per visitor and per day. The automatic reading stays when the model’s text is late, fails the check or is not available; the buttons above the reading switch between them. The dnaA window keeps its hand-written reading and offers the model’s. Without the model’s server there is no model’s reading.
    About
    where the data and the model come from and whom to credit, and How it was computed: the script behind each part of the page, and what it wrote, in the repository.

    Mouse, touch and keys

    Move
    drag the background, or drag anywhere with the wheel pressed. Shift + wheel scrolls along the graph; in full screen the wheel alone does, when the graph has nothing to scroll up or down.
    Zoom
    Ctrl + wheel, or the buttons: Overview fits the whole window, Fill height fills the height and scrolls sideways, Full screen gives the graph the screen.
    Touch
    a tap on a box pins its card (at the bottom of the screen on a phone); tap the boxes in order, or slide across them, to draw a path, and drag one of its boxes to edit it; while drawing, move the graph with a finger on its background. Swipe the frame of the chromosome map to move along. A tap on a perplexity bar, a flag or a column head shows what a mouse would show on hover. On a phone the Coupled regions map scrolls sideways; its lists reach everything.
    Keys
    in the Graph tab, + − zoom, 0 back to 100%, F overview, H fill height, N P next and previous window. Esc closes a card or a list of suggestions, cancels a drag or leaves full screen. On a tab, ← → move between tabs (Home End the first and last); on the chromosome map, see Along the chromosome. ? opens this help, outside a text box. In the guided tour, → or Enter goes on, ← back, Esc ends it. A word of the glossary shows its definition when focused; Enter keeps it open, Esc closes it.
    Swipes
    a sideways swipe scrolls what is under it (the graph, the map of coupled regions); it never turns the page back to the previous tab. The browser’s Back button still does.
    Boxes from the keyboard
    Tab reaches the graph’s boxes as one stop; the arrows move to the nearest box in the next column or up and down a column, and show its card; Enter pins it (or, while drawing, adds the box to the path), and Esc closes the card and comes back to the box. In the Coupled regions lists, the arrows (Home End) move between rows and Enter picks one.

    The model’s server

    On the public Space
    it runs for you, on a CPU, beside the page: nothing to install. Visitors share it, so a computation may wait its turn, and after a long quiet spell the Space sleeps and takes a minute or two to wake up.
    Run it yourself
    git clone https://github.com/ggautreau/PanGramGraph, fetch the data (too large for git) from the Space with the one command the README gives, or rebuild them with its Pipeline, then run python3 serve_live.py in the repository and open http://localhost:8765/. It listens on 127.0.0.1 only and uses a GPU when there is one. A page opened as a file, or from another local server (another port), reaches it too.
    What needs it
    the model’s call in one genome, drawn paths, windows beyond dnaA, attention maps, what the model does without a coupled element, and a window’s reading by DeepSeek-V4.1-Flash. The graph of the dnaA window, the coupled regions with their verdicts, and the findings of the dnaA window with its hand-written reading work without it.

    Glossary