この野蛮なスクリプトを作成して、文字列内の位置の可能なすべての組み合わせで n (最大 n=4) の $ を含む文字列の順列を作成しました。私は最終的に.replace('$','(\\w)')
DNA検索シーケンスのミスマッチに使用します。スクリプトの書き方が原因で、一部の順列の $ の数は要求された数よりも少なくなっています。次に、それらを削除するスクリプトを作成しましたが、効果がないようで、削除スクリプトを実行するたびに、不要な順列がさらに削除されます。以下に貼り付けたコードでは、4 つの不一致がある単純なシーケンスで関数をテストしていることがわかります。次に、毎回削除される式の数をカウントする一連の削除スクリプトを実行します...私の経験では、ワイルドカード $ が 4 つ未満のすべての式を削除するには、約 8 回かかります。これについていくつか質問があります。
「n」個の不一致がある検索用の組み込み関数はありますか? 多分biopythonでも?これまでのところ、Paul_McGuire_regex 関数を見てきました:
文字列の任意の場所で 1 つの不一致を許可する文字列を検索します。
これは、1 つの不一致しか生成しないようです。私は非常に新しいコーダーであるため、そのページの残りの関数のすべてのコードを完全に理解していないことを認めなければなりません。これは自分にとって良い練習になると思うので、このスクリプト全体を書くためのより良い方法はありますか?...Paul_McGuire_regex 関数を必要な回数だけ繰り返すことはできますか?
私にとって最も困惑しているのは、削除スクリプトが初めて 100% 機能しないのはなぜですか?
ご協力いただきありがとうございます。
def Mismatch(Search,n):
List = []
SearchL = list(Search)
if n > 4:
return("Error: Maximum of 4 mismatches")
for i in range(0,len(Search)):
if n == 1:
SearchL_i = list(Search)
SearchL_i[i] = '$'
List.append(''.join(SearchL_i))
if n > 1:
for j in range (0,len(Search)):
if n == 2:
SearchL_j = list(Search)
SearchL_j[i] = '$'
SearchL_j[j] = '$'
List.append(''.join(SearchL_j))
if n > 2:
for k in range(0,len(Search)):
if n == 3:
SearchL_k = list(Search)
SearchL_k[i] = '$'
SearchL_k[j] = '$'
SearchL_k[k] = '$'
List.append(''.join(SearchL_k))
if n > 3:
for l in range(0,len(Search)):
if n ==4:
SearchL_l = list(Search)
SearchL_l[i] = '$'
SearchL_l[j] = '$'
SearchL_l[k] = '$'
SearchL_l[l] = '$'
List.append(''.join(SearchL_l))
counter=0
for el in List:
if el.count('$') < n:
counter+=1
List.remove(el)
return(List)
List_RE = Mismatch('abcde',4)
counter = 0
for el in List_RE:
if el.count('$') < 4:
List_RE.remove(el)
counter+=1
print("Filter2="+str(counter))