2つのファイルがあります。ポジションがPythonを使用してリージョン内にあるかどうかを確認するには
ファイルAには、染色体、開始位置、終了位置の3つの列があります。
CHR,START,END
chr1,1203245,1203374
chr1,1202020,1202213
chr1,1201293,1201465
chr1,1200844,1201128
chr1,1200527,1200585
ファイルBは、2つの列、すなわち、染色体、位置を有する。
CHR,POS
chr1,1579264
chr1,1641372
chr1,3020521
chr2,2097836
chr3,2374462
両方のファイルが大きい。
ファイルBのすべての位置がファイルAのどの領域にあるかをPythonを使用して決定する方法を教えてください。 1つの位置と1つの領域があればコードを書くことができますが、領域のリストの手掛かりはありません。
Position is in a region
がCHR
が同じになるとPOS >= START and POS <= END
なければならないこと、例えば、ファイルBのchr1,1203250
は、ファイルのchr1,1203245,1203374
私はoscarbransonのアドバイスを取り、コードを書く
にする必要があります:
for i,r in B.iterrows():
B.loc[i, 'in_A'] = any((r.CHR == A.CHR) & (r.POS >= A.SATRT) & (r.POS <= A.END))
しかし2の両方ファイルが大きく、コードはまだ実行されています。これをもっと速くする方法があれば?
質問を編集して、入力と出力の例を教えてください。 –
私は正規表現がすると思います。例を示すために、POS列とSTART/ENDの関係が何であるかを知る必要があります。あなたは、マッチが何であるかを説明して、あなたの質問を再び更新するのに十分親切でしょうか? –