ゲノム解析にpython3を使用している初心者です。
以下のスクリプトはjupyter notebokを使用しました。
文字列を検索してヒットしたら開始位置を取ってくる以下のようなスクリプトを作成しました。
input fileはfastaファイルといわれる2行からなるデータです。
ex)
line1
ATCGTTTT
line2
ATCGATCG
子のインプットファイルで回すと探したい文字列開始位置を取ってくれます。
例えばTTTを入れると。
4
5
と出力されます。
ここで、”何でもいいから1文字”という条件を含めて検索したいので以下のスクリプトを改良したいです。
例えばTNTという配列を検索し,NはA,T,C,Gのどれでも1文字が入っていればいいです。
塩基配列なので出現する文字はA,T,C,Gの4つのみです。
しかし、スクリプト中にNを定義(N == T or A or C or G) したり re.search()を
使ってみてもエラーだったり、うまく検索されなかったりして困っています。
if文でこのような検索をする場合どうしたらよいかどなたかご教授お願いいたします。
以下が作成した改良前のスクリプトです。
with open('input.txt') as file: for l in file: if '>' in l: continue x = len(l) end = x - 1 last = len('search text') start = 0 while last <= end: if l[start:last] == "search text": print(start) last += 1 start += 1 else: last += 1 start += 1 #4 #5
試したこと↓
Nを定義してみる。
N = A or T or C or G with open('input.txt') as file: for l in file: if '>' in l: continue x = len(l) end = x -1 last = len("T" + N + "T") start = 0 while last <= end: if l[start:last] == "T" + N + "T": print(start) last += 1 start += 1 else: last += 1 start += 1 #エラーも結果も出てきませんでした。
re.searchを使ってみる。
N == A or T or C or G with open('fasta.txt') as file: for l in file: if '>' in l: continue x = len(l) end = x - 1 last = len("T" + N + "T") start = 0 while last <= end: if re.search("T" + N + "T",l[start:last]): print(start) last += 1 start += 1 else: last += 1 start += 1 #エラーも結果も出てきませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/15 11:38