DNA Shuffle
v1.0.0Shuffle DNA sequences while preserving nucleotide, dinucleotide, or k-mer composition.
Paste a DNA or RNA sequence, or upload a FASTA file with one or more records. Choose which composition every shuffle must keep, set how many shuffles you want per sequence, and select Shuffle. ProteinIQ returns the shuffled sequences as FASTA in the browser, ready to copy or download as a set of randomized control sequences.
With Shuffle method set to Mononucleotide, Random seed set to 42, and the other settings at their defaults, this promoter fragment:
>promoter_fragment
TTGACAATTAATCATCGGCTCGTATAATGTGTGGAATTGTGAGCGGATAACAATTTCACACAGGAreturns a sequence with the same number of A, C, G, and T:
>promoter_fragment_shuffled
AACATTTTAGAACTAATTTACTGCTAAGCTGCGTACGGCAAGTTGGTTTAGAAGTGACGAGACTATo shuffle a sequence:
.docx), or PDF file.Dinucleotide method, the usual control for RNA folding and motif enrichment, or choose another Shuffle method.Number of shuffles to the number of control sequences you need per input, up to 100.Random seed if the run must be repeatable, or leave it at 0 to draw a new seed.No account or credits are required, and sequences never leave your browser.
The page example keeps every dinucleotide count of the same promoter fragment and makes three replicates with seed 42:
>promoter_fragment_shuffled_1
TTCATTGTTGTGATCAGAATATTAAATTGGCATATACTGTGGTCAGCGGATCGGACAACGACAAA
>promoter_fragment_shuffled_2
TACATGTGGGCATTTACGTTTGTCACAAATGATCAACGGAGAAATATGGTATCGATGCTTCAAGA
>promoter_fragment_shuffled_3
TGCTGACATATTTCAAATTGTCACATTCGATTGTCGAACGGGGTAACAAGGCATGTATGAGAATAThe summary above the preview reads 3 shuffled sequences from 1 input sequence, dinucleotide counts preserved, seed 42. Each replicate starts with T and ends with A, like the input. A rearrangement of the same bases that keeps every dinucleotide count always shares the first and last base.
RNA is shuffled with U kept as U. With K-mer at size 3, two shuffles, and seed 7:
>hairpin_rna some description
GGGAAACUUCGGUUUCCCreturns:
>hairpin_rna_shuffled_1 some description
GGGAAACUUUCGGUUCCC
>hairpin_rna_shuffled_2 some description
GGUUUCGGGAAACUUCCCThe suffix is added to the sequence ID, before the description, so every record keeps a unique ID for downstream tools.
| Input | What happens |
|---|---|
| Raw sequence | Treated as one sequence named Sequence. Blocks separated by a blank line become Sequence_1, Sequence_2, and so on. |
| FASTA records | Each record is shuffled separately and keeps its header. |
| RNA | U is kept. DNA and RNA can be mixed in one file. |
| IUPAC codes | N, R, Y, S, W, K, M, B, D, H, and V are shuffled like any other base, so their counts are kept too. |
| Lowercase | Accepted. Output case follows Output case. |
| Database layout | Spaces, position numbers, and ORIGIN and // lines copied from a GenBank page are removed. |
| Alignment gaps | - and . are removed before shuffling, with a notice. |
| Word and PDF files | Text is extracted from .docx and .pdf uploads. Titles, captions, and page footers are skipped with a notice. |
| Text pasted from documents | Invisible characters, non-breaking spaces, and soft hyphens are removed. |
Protein sequences, FASTQ files, and full GenBank records are rejected with a message that names the problem. Convert FASTQ with FASTQ to FASTA and GenBank records with GenBank to FASTA first.
| Setting | Description |
|---|---|
Shuffle method | Which composition every shuffle keeps. Mononucleotide keeps base counts. Dinucleotide (default) keeps the count of all 16 adjacent base pairs, and with them the base counts. K-mer keeps the count of every k-mer of the chosen size. |
K-mer size | Length of the k-mers to keep, from 2 to 6 (default 3). Only shown for the K-mer method. A size of 2 is the same as Dinucleotide. |
Number of shuffles | Shuffled sequences generated per input sequence, from 1 to 100 (default 1). |
Random seed | 0 (default) draws a new seed for each run. Any value from 1 to 999999 gives the same shuffles for the same input and settings. The seed used is shown in the summary and the run log. |
| Setting | Description |
|---|---|
Output case | Uppercase (default) or Lowercase. |
Add suffix to headers | Adds _shuffled, or _shuffled_1, _shuffled_2 for several shuffles, to each sequence ID. On by default. Turning it off with more than one shuffle gives repeated IDs. |
Line length | Bases per FASTA line, from 0 to 200 (default 80). 0 puts each sequence on one line. |
The Preview tab shows the shuffled FASTA with a one-line summary of the number of sequences, the composition kept, and the seed. The Files tab has two downloads:
_shuffled added, or shuffled.fasta for pasted input.run.log, which records the method, seed, shuffles per sequence, each sequence's length, and any notices.Notices appear above the result when records were skipped, gaps were removed, lines of different lengths were joined into one sequence, a sequence is mostly ambiguity codes, or a shuffle came back identical to its input.
Each record gets its own random stream from the seed. Adding shuffles keeps the earlier ones unchanged, and editing one record does not change the shuffles of the others.
| Goal | Method |
|---|---|
| Test whether base composition alone explains a result | Mononucleotide |
| Control for RNA folding energy or base-stacking effects | Dinucleotide |
| Control for CpG depletion or other neighbor-pair bias in motif searches | Dinucleotide |
| Keep codon-sized or longer local patterns | K-mer with size 3 or more |
Higher orders keep more of the original sequence's local structure, so the controls are stricter. They also leave fewer possible arrangements. A short sequence shuffled at k-mer size 5 or 6 often has only one arrangement, and the tool then returns the input unchanged with a notice.
Bases are permuted with the Fisher-Yates algorithm. Every ordering of the input bases is equally likely.
Keeping k-mer counts means finding another walk through the same set of overlapping words. The sequence is turned into a graph whose vertices are its (k-1)-mers and whose edges are its k-mers. Every sequence with the same k-mer counts is an Eulerian path through this graph, a path that uses every edge exactly once, starting from the first (k-1)-mer and ending at the last.
A random Eulerian path is not automatically a fair sample: a greedy random walk favors some arrangements many times over others. DNA Shuffle uses the Altschul-Erickson algorithm in the form described by Kandel et al. and implemented in uShuffle. It first draws a uniformly random tree of "last exits" toward the final vertex with Wilson's algorithm, then permutes the remaining exits at each vertex before walking the graph. Every sequence with the same k-mer counts is produced with equal probability.
The random numbers come from xoshiro128**, a generator with a very long period, so long sequences and many replicates do not repeat or correlate.
The sequence has few or no other arrangements with the same composition. This is common for sequences under about 30 bases at k-mer size 4 or more. Use a lower order or a longer sequence.
The record had a header but no sequence lines. The notice lists the skipped names.
The record contains letters no DNA or RNA base code uses, such as E, F, I, L, P, or Q. It is either a protein sequence or text mixed into the sequence lines. DNA Shuffle only shuffles nucleotide sequences. To pull sequences out of a document with a lot of surrounding text, run it through TXT to FASTA first.
Lines that read as ordinary text, such as a table title or Page 1 of 1, are skipped, and the notice quotes them. A line is treated as text when it has a capitalized word with letters no base code uses. Sequence lines, including lowercase soft-masked bases, are never skipped.
Headerless lines are joined into one sequence, and a notice appears when their lengths suggest a list. Add a FASTA header above each sequence, or separate them with blank lines.
A dinucleotide shuffle rearranges a sequence so that the count of every adjacent base pair (AA, AC, CG, and so on) stays the same. It also keeps the base counts and the first and last base.
Shuffled sequences with the same composition give a null distribution. If a motif score or folding energy for the real sequence is more extreme than for most shuffles, composition alone is unlikely to explain it.
Enough for the statistic you compute. A z-score is often based on 100 or more shuffles, and an empirical p-value cannot be smaller than one over the number of shuffles plus one.
It uses the same uniform k-let shuffling method as uShuffle. The outputs differ for the same seed because the random number generators differ.
No. DNA Shuffle accepts DNA and RNA only.
DNA Shuffle rearranges an existing sequence while keeping selected composition. To keep most of a sequence unchanged and introduce a controlled number or rate of substitutions, insertions, or deletions, use the DNA mutation generator. To generate sequences from scratch with a chosen GC content, use Random DNA.
Optimize coding DNA for a target organism with DNA Chisel while preserving its translation.
Mutate DNA online by exact count or mutation rate, with reproducible controls and FASTA export.
Generate random DNA sequences with controlled length, GC content, and restriction sites.
Generate ligand protonation states over a pH range with Dimorphite-DL.
Design overlapping peptide libraries with adjustable length, overlap and terminal restrictions. Runs in your browser.
Generate random protein sequences with controlled length, amino acid composition, and motifs.
Generate random RNA test sequences with adjustable GC content and optional RNA-like templates and sequence motifs.
Enumerate stereoisomers from SMILES while preserving assigned stereochemistry by default.
Clean DNA sequences by removing or replacing non-standard nucleotides with IUPAC-aware filters.
Extract CDS, mRNA, gene, rRNA, and tRNA features from GenBank records into FASTA.