これが私がやろうとしていることです:
私が比較している2つのファイルがあります。
aapos
そのため、ミューテーションの名前と、そのミューテーションに関連付けられた という番号を含む 2 つのファイルがあります。
ファイル 1 にはt
多数のミューテーションがあり、ファイル 2 にはs
多数のミューテーションがあります。
ここで、ファイル番号 2 の変異には特定の生物学的重要性があるため、ファイル 1 の変異名 (tagname
プログラムで呼び出される) がファイル 2 のタグ名と同等かどうか、および aapos がその特定の変異の数は、ファイル番号 2 の aapos1 と aapos2 の範囲内にあります。
これらの 2 つの条件が満たされている場合、ファイル 1 にある突然変異には特別な生物学的重要性があり、これをカテゴリー 1 と呼びましょう。それ以外の場合は、生物学的重要性を持たないカテゴリー 2 に分類されます。
さらに、これらの各ファイルには と呼ばれる列がありsynonymous
、ファイル 1 の各ミューテーションに対して、同義の列に 0 または 1 の番号が割り当てられます。
これが私がやりたいことです: CATEGORY 2 に属する各突然変異について、synonymous
その突然変異の列が 0 の場合、カウンターnonsyntwo
に 1 を追加し、1 の場合、カウンターsyntwo
に 1 を追加します。基本的に、カテゴリ 2 に属するすべての突然変異について、synonymous
列に割り当てられた値が 0 の数と、割り当てられた値が 1 の数を数えたいと思います。
ただし、プログラムを実行するnonsyntwo
とsyntwo
、 と の数が得られます。これは、使用しているファイル内のタグ名の数よりもはるかに多くなります。と を両方とも 15に変更するs
とt
(これらのファイルのそれぞれに何千ものタグ名があります)、 の値として 94 が得られますnonsyntwo
。
プログラムが 15 個のタグ名を反復処理している場合、これはどのように可能ですか?
for x in range(1,s):
for b in range (1,t):
if tagname1[x]== tagname2[b]:
if int(aapos1[b]) <= int(aapos[x])<= int(aapos2[b]):
snps = snps + 1
elif int(synonymous[x]) == 0:
nonsyntwo = nonsyntwo + 1
elif int(synonymous[x]) == 1:
syntwo = syntwo + 1
elif tagname1[x]!= tagname2[b]:
if int(synonymous[x]) == 0:
nonsyntwo = nonsyntwo + 1
elif int(synonymous[x]) == 1:
syntwo = syntwo + 1