Strangschrift — language reference
A strand is just letters. The chemistry is known, not declared:
you name a base or write a sequence, and the language fills in the facts and draws
them. Two registers — computed (the chemistry; exact, checkable against any
database) and declared (what the tool can't honestly derive — you state it,
it shows the claim).
Declare data
- nucleotide A
- name a canonical base — A C G T (DNA) or U (RNA)
- dna x = ATGC
- a strand spelled from A C G T
- rna x = AUGC
- a strand spelled from A C G U
- protein x = MAF
- a peptide in the 20 amino-acid codes
Transform — functions over a strand
- complement(s)
- per-base partner (A–T/U, G–C); nucleic, within-polymer
- reverse(s)
- flip the reading direction, 5′↔3′
- reverse_complement(s)
- the same partner written 5′→3′ — reverse ∘ complement
- transcribe(s)
- DNA → RNA, a per-base T→U
- translate(s)
- RNA → protein: scan to the first AUG, read codons to the stop
Compose
dna gene = GGCATGGCATTTGGGTGCTAACCC
rna mrna = transcribe(gene)
protein p = translate(mrna) # gene → transcribe → translate
Notes
- Case-insensitive (FASTA convention); whitespace inside a sequence is ignored.
# starts a comment to the end of the line.
- Which strand is the template, and which reading frame, are choices — you
write them as composition, never as a hidden flag.