diffなどのコマンドラインツールを使用して、Linuxで2つのヌクレオチド配列を比較する方法はありますか?

diffなどのコマンドラインツールを使用して、Linuxで2つのヌクレオチド配列を比較する方法はありますか?

文字ごとに比較したい2つのゲノム配列があります。それらはほぼ同じパターンを持っていますが、いくつかのヌクレオチド変換が起こります。

例えば

シーケンス1

ATGGCGATGAGCAGCGGCGGCAGTGGTGGCGGCGTCCCGGAGCAGGAGGATTCCGTGCTGTTCCGGCGCGGCACAGGCCAGAGCGATGATTCTGACATTTGGGATGATACAGCACTGATAAAAGCATATGATAAAGCTGTGGCTTCATTTAAGCATGCTCTAAAGAATGGTGACATTTGTGAAACTTCGGGTAAACCAAAAACCACACCTAAAAGAAAACCTGCTAAGAAGAATAAAAGCCAAAAGAAGAATACTGCAGCTTCCTTACAACAGTGGAAAGTTGGGGACAAATGTTCTGCCATTTGGTCAGAAGACGGTTGCATTTACCCAGCTACCATTGCTTCAATTGATTTTAAGAGAGAAACCTGTGTTGTGGTTTACACTGGATATGGAAATAGAGAGGAGCAAAATCTGTCCGATCTACTTTCCCCAATCTGTGAAGTAGCTAATAATATAGAACAAAATGCTCAAGAGAATGAAAATGAAAGCCAAGTTTCAACAGATGAAAGTGAGAACTCCAGGTCTCCTGGAAATAAATCAGATAACATCAAGCCCAAATCTGCTCCATGGAACTCTTTTCTCCCTCCACCACCCCCCATGCCAGGGCCAAGACTGGGACCAGGAAAGCCAGGTCTAAAATTCAATGGCCCACCACCGCCACCGCCACCACCACCACCCCACTTACTATCATGCTGGCTGCCTCCATTTCCTTCTGGACCACCAATAATTCCCCCACCACCTCCCATATGTCCAGATTCTCTTGATGATGCTGATGCTTTGGGAAGTATGTTAATTTCATGGTACATGAGTGGCTATCATACTGGCTATTATATGGGTTTCAGACAAAATCAAAAAGAAGGAAGGTGCTCACATTCCTTAAATTAA

シーケンス2

ATGGCGATGAGCAGCGGCGGCAGTGGTGGCGGCGTCCCGGAGCAGGAGGATTCCGTGCTGTTCCGGCGCGGCACAGGCCAGAGCGATGATTCTGACATTTGGGATGATACAGCACTGATAAAAGCATATGATAAAGCTGTGGCTTCATTTAAGCATGCTCTAAAGAATGGTGACATTTGTGAAACTTCGGGTAAACCAAAAACCACACCTAAAAGAAAACCTGCTAAGAAGAATAAAAGCCAAAAGAAGAATACTGCAGCTTCCTTACAACAGTGGAAAGTTGGGGACAAATGTTCTGCCATTTGGTCAGAAGACGGTTGCATTTACCCAGCTACCATTGCTTCAATTGATTTTAAGAGAGAAACCTGTGTTGTGGTTTACACTGGATATGGAAATAGAGAGGAGCAAAATCTGTCCGATCTACTTTCCCCAATCTGTGAAGTAGCTAATAATATAGAACAGAATGCTCAAGAGAATGAAAATGAAAGCCAAGTTTCAACAGATGAAAGTGAGAACTCCAGGTCTCCTGGAAATAAATCAGATAACATCAAGCCCAAATCTGCTCCATGGAACTCTTTTCTCCCTCCACCACCCCCCATGCCAGGGCCAAGACTGGGACCAGGAAAGCCAGGTCTAAAATTCAATGGCCCACCACCGCCACCGCCACCACCACCACCCCACTTACTATCATGCTGGCTGCCTCCATTTCCTTCTGGACCACCAATAATTCCCCCACCACCTCCCATATGTCCAGATTCTCTTGATGATGCTGATGCTTTGGGAAGTATGTTAATTTCATGGTACATGAGTGGCTATCATACTGGCTATTATATGGAAATGCTGGCATAG

シーケンスと色を比較したり、違いを印刷するbash方法はありますか?

編集:Linuxツールを介して遺伝子配列を比較したいです。

文字を1行ずつ比較し、違いを強調する必要があります。diff何百もの文字からなる個々の単語を比較するのは悪いようです。

答え1

各行を別々のファイルとして保存できます。

f1 - 最初のゲノム配列 f2 - 2番目のゲノム配列

これで、線を(水平から垂直に)変換する必要があります。

awk '{gsub(".","&\n");printf "%s",$0}' < f1 >f1a
awk '{gsub(".","&\n");printf "%s",$0}' < f2 >f2a

これにより、新しい形式が2つの新しいファイル(f1aとf2a)に保存されます。これで、この2つのファイルを次のものと組み合わせます。diff

diff -y f1a f2a  #will output both lines and show differences
diff -c f1a f2a  #will only output the differences and tell you from which line to which line

違いに関する追加情報:http://man7.org/linux/man-pages/man1/diff.1.html

上記は、2つのゲノム配列を変数として渡すことができる小さなスクリプトにすることもできます。

カラー出力が必要な場合はcolordiff(Ubuntuでsudo apt-get install colordiff:)を使用して、以下のスクリプトからに置き換えてくださいdiffcolordiffパラレル出力の場合は、オプションを使用してください-y

#!/bin/bash
# This script will compare the 2 genomic sequences
echo "1st genomic sequence, followed by [ENTER]:"
read gena
echo "2nd genomic sequence, followed by [ENTER]:"
read genb
echo $gena | awk '{gsub(".","&\n");printf "%s",$0}' > /tmp/fa
echo $genb | awk '{gsub(".","&\n");printf "%s",$0}' > /tmp/fb
echo "Insert the diff argument you wish to use (e.g. -y or -c). Please refer to man diff for information. Hit [ENTER]:"
read $arg
diff $arg /tmp/fa /tmp/fb
exit

関連情報