私はPythonにまったく慣れていないので、可能であれば助けていただければ幸いです。私は 2 つの近縁生物 [E_C & E_F] のゲノムを比較し、いくつかの基本的な挿入と削除を特定しようとしています。両方の生物の配列を使用して、FASTA ペアワイズ アラインメント (glsearch36) を実行しました。
以下は、私の python スクリプトのセクションで、1 つのシーケンス (データベース) で 7 ヌクレオチド (ヘプタマー) を特定できましたが、これは他のシーケンス (クエリ) のギャップに対応しています。これは私が持っているものの例です:
ATGCACAA-ACCTGTATG # query
ATGCAGAGGAAGAGCAAG # database
9
GAGGAAG
ギャップが 9 位にあると仮定します。スクリプトを改良して、両方の配列で 20 ヌクレオチド以上離れており、周囲のヌクレオチドも一致する場合にのみギャップを選択しようとしています。
ATGCACAAGTAAGGTTACCG-ACCTGTATGTGAACTCAACA
||| |||
GTGCTCGGGTCACCTTACCGGACCGCCCAGGGCGGCCCAAG
21
CCGGACC
これは私のスクリプトのセクションで、上半分はさまざまなファイルを開く処理です。また、最後に各シーケンスのカウントを含む辞書も出力します。
list_of_positions = []
for match in re.finditer(r'(?=(%s))' % re.escape("-"), dict_seqs[E_C]):
list_of_positions.append(match.start())
set_of_positions = set(list_of_positions)
for position in list_of_positions:
list_no_indels = []
for number in range(position-20, position) :
list_no_indels.append(number)
for number in range(position+1, position+21) :
list_no_indels.append(number)
set_no_indels = set(list_no_indels)
if len(set_no_indels.intersection(set_of_positions))> 0 : continue
if len(set_no_indels.intersection(set_of_positions_EF))> 0 : continue
print position
#print match.start()
print dict_seqs[E_F][position -3:position +3]
key = dict_seqs[E_F][position -3: position +3]
if nt_dict.has_key(key):
nt_dict[key] += 1
else:
nt_dict[key] = 1
print nt_dict
基本的に、基本的な挿入/削除分析を行うために、ペアワイズ アラインメントの結果を編集して、クエリ シーケンスとデータベース シーケンスの両方でギャップの反対側のヌクレオチドを特定しようとしていました。
以前の問題の 1 つは、ノイズを減らすためにギャップ "-" 間の距離を 20 nt に増やすことで解決できました。これにより、結果が改善されました。上で編集されたスクリプト。
これは私の結果の例であり、最後に各シーケンスの出現回数をカウントする辞書があります。
ATGCACAA-ACCTGTATG # query
ATGCAGAGGAAGAGCAAG # database
9 (position on the sequence)
GAGGAA (hexamer)
ATGCACAAGACCTGTATG # query
ATGCAGAG-AAGAGCAAG # database
9 (position)
CAAGAC (hexamer)
ただし、ギャップの周りのヌクレオチドをこのように正確に一致させるスクリプトを修正しようとしています。各シーケンスで一致するntを表示するだけです:
GGTTACCG-ACCTGTATGTGAACTCAACA # query
||| ||
CCTTACCGGACCGCCCAGGGCGGCCCAAG # database
9
ACCGAC
これについて何か助けていただければ幸いです。