DNA配列をゴニョゴニョ・・・のようなプログラミングをしていると、避けて通れないのが相補鎖、すなわちReverse Complementな塩基配列の扱いです。
BioPythonあたり使われている方は、Bio.Seq.reverse_complement()
で一撃で求められるのですが、こいつを逆さまに書いて、相補鎖であることを素敵に視覚に訴えるように明示できないかと試してみました。
もちろん画像やらTeXやら使えばいいのですが、テキスト端末で文字を逆さまにしてみたかったので。
実はUnicodeには全アルファベットの逆さま版の文字がある・・・かな、と思って調べている人は世の中に多少はいらっしゃるようですが、残念ながらありません。ただ、果敢にも逆さまにしたアルファベットに似た文字を探し出し、テーブルを作っている人は少なからずいるようで、これら先人の知恵を拝借してやってみます。
In [1]: R = {'A': chr(0x23CA), 'T': chr(0x15C4), 'C': chr(0x2141), 'G': chr(0x2183)}
In [2]: forward = ''.join(random.choice('ATCG') for i in range(50))
In [3]: reverse = ''.join(R[x] for x in forward)
In [4]: print(forward); print(reverse)
CTTAAAGCACTTTGTCTTCTTAGATGGCTAATCTCTCCAAGCGGAGCGGC
⅁ᗄᗄ⏊⏊⏊Ↄ⅁⏊⅁ᗄᗄᗄↃᗄ⅁ᗄᗄ⅁ᗄᗄ⏊Ↄ⏊ᗄↃↃ⅁ᗄ⏊⏊ᗄ⅁ᗄ⅁ᗄ⅁⅁⏊⏊Ↄ⅁ↃↃ⏊Ↄ⅁ↃↃ⅁
・・・微妙・・・フォントによっては上下の位置が合わないし・・・
小文字ならどうだろう。
In [5]: r = {'a': chr(0x0287), 't': chr(0x0250), 'c': chr(0x1d77), 'g': chr(0x0254)}
In [6]: forward = ''.join(random.choice('atcg') for i in range(50))
In [7]: reverse = ''.join(r[x] for x in forward)
In [8]: print(forward); print(reverse)
aggcgtcctcgatggcacttggcgccctatggttcggattggtccgcctc
ʇɔɔᵷɔɐᵷᵷɐᵷɔʇɐɔɔᵷʇᵷɐɐɔɔᵷɔᵷᵷᵷɐʇɐɔɔɐɐᵷɔɔʇɐɐɔɔɐᵷᵷɔᵷᵷɐᵷ
・・・やめといたほうが良さそうです。