SeqBench

What the Join Between Two Genes Creates

6 min read · Updated October 30, 2026

The elements that break a multi-gene construct are usually in none of its parts. They are made by the join: the last bases of one coding sequence plus the first of the next spacer spell a ribosome binding site, or a −35 box inside a gene pairs with a −10 box that only exists once the next part is attached.

Checking each part and then assembling finds nothing. Here is the same pair of genes assembled two ways, differing only in the spacer between them.

One spacer, one promoter

Two coding sequences, no promoter, no terminator, joined by a 14-base spacer GCTAGCTACTAGAG: the assembled 401 bp molecule contains no internal promoter.

Change that spacer to the 13-base CTATAATGCTAGC and the same two genes produce a 400 bp molecule carrying an internal promoter at positions 196–226 — a −35 TTGACA and a −10 TATAAT separated by 19 nucleotides, both exactly consensus.

The −35 is inside the first gene, where it has always been and where it means nothing on its own. The −10 is in the new spacer. Neither part contains a promoter; the junction does.

Why this is the normal case rather than bad luck

The sigma-70 consensus is two short boxes with a tolerant spacing, and coding sequence is not random with respect to them — TTGACA is an ordinary run of codons. A junction is a place where two sequences that were never compared with each other are put a fixed distance apart, which is precisely the condition for an accidental box pair.

The same argument applies to the other elements. A Shine-Dalgarno sequence is six bases; a rho-independent terminator is an inverted repeat followed by a T-rich stretch, which the end of one gene and the start of a spacer can supply between them.

So the scan has to run on the assembled molecule. Scanning parts is not a weaker version of this check — it cannot find these at all.

What a found element means, and what it does not

The output is what MATCHED: a −35 and a −10 at a given spacing with a given number of mismatches, at a given position, on a given strand. It is not a claim that the element fires. Whether that promoter transcribes anything in a cell is a different question, with its own model and its own accuracy statement.

The reading rule that saves the most time: check whether the element is one you put there. Scanning an operon with a real promoter at its 5' end reports that promoter as an internal element, correctly, and an internal start codon reported at the same position as a gene's own ATG is usually the start codon's own context rather than a second one.

The findings are the elements you did not place — a promoter in the middle, a start codon out of frame with the gene it sits in, a terminator between two genes that should be co-transcribed.

The reverse strand matters more here than almost anywhere

A promoter pointing backwards inside a cassette transcribes antisense RNA across everything upstream of it, which knocks expression down in a way that looks like a cloning problem rather than a design problem. It is invisible to any forward-only scan.

The same holds for internal starts on the reverse strand, which produce peptides nobody designed, and for terminators, which stop transcription regardless of which strand they are read from.

What the default ribosome binding site is, and is not

An operon assembled without an explicit RBS in front of each gene gets a consensus Shine-Dalgarno at a typical spacing, and the output says so in as many words: it is a consensus sequence at a plausible distance, not a rate chosen for that gene.

That distinction is the whole difference between assembling a construct and designing one. Two genes with identical consensus RBSs do not express equally, because the sequence around each start codon folds differently — choosing the ribosome binding sites is a separate step with a separate tool, and a construct built on defaults is a first draft.

Frequently asked questions

Why is checking each part before assembly not enough?

Because the elements that matter are often created by the join. A worked example: two genes and a 13-base spacer produce a sigma-70 promoter whose two boxes are exactly consensus, with its −35 in the first gene and its −10 in the spacer. Neither part contains a promoter, and checking them individually reports nothing.

An internal promoter was found. Is the construct broken?

No. The scan reports consensus matches, not activity, and a match is a reason to look rather than a verdict. The first thing to check is whether the element is one you placed on purpose — the operon's own promoter and each gene's own start codon are reported too, because they are in the molecule.

Why does an internal start codon matter if it is out of frame?

Because out of frame is how it does damage. An internal start in the gene's own frame makes a truncated version of the protein; one in another frame makes an unrelated peptide and consumes ribosomes. Either way the yield of the intended product falls, and neither shows up in a sequence check that only confirms the gene is correct.

What does recoding a gene for a host actually do here?

It rewrites the codons to that host's most frequent choices and verifies the rewrite still translates to the same protein. It is a determinate recoding, not a yield prediction — published codon-optimisation algorithms are close to a coin flip on whether they raise or lower real expression, so treat it as a way to remove unwanted sequence features rather than as an improvement.

Related references

Related tools

Related guides