別のデータ操作に関する質問があります。したがって、タブ区切りデータのこの .gtf ファイルがあり、特定の機能を抽出する必要があります。以前は、各遺伝子の「エクソン」タイプごとに遺伝子 ID、POS1、および POS2 を抽出するだけでよかったので、これは簡単でした。同じことを行う必要がありますが、最初に遺伝子内の位置に関連する各エクソンの POS1 と POS2 を見つける必要があります。現在、列 POS1 と POS2 は、ゲノム全体の TYPE の位置に基づいて番号が付けられています (これが、番号が非常に高い理由です)。ストランドが - の場合、これは逆になります。PITG_00002 を見ると、停止コドンが開始コドンの前にあることがわかります。これは、すべてが + (テンプレート) ストランドに対して相対的に番号付けされているためです。データシートのサンプルは次のとおりです。
GENE ID TYPE POS1 POS2 STRAND
PITG_00003 start_codon 38775 38777 + 0
PITG_00003 stop_codon 39069 39071 + 0
PITG_00003 exon 38775 39071 + .
PITG_00003 CDS 38775 39068 + 0
PITG_00004 start_codon 39526 39528 + 0
PITG_00004 stop_codon 41492 41494 + 0
PITG_00004 exon 39526 40416 + .
PITG_00004 CDS 39526 40416 + 0
PITG_00004 exon 40486 40771 + .
PITG_00004 CDS 40486 40771 + 0
PITG_00004 exon 40827 41494 + .
PITG_00004 CDS 40827 41491 + 2
PITG_00002 start_codon 10520 10522 - 0
PITG_00002 stop_codon 10097 10099 - 0
PITG_00002 exon 10474 10522 - .
PITG_00002 CDS 10474 10522 - 0
PITG_00002 exon 10171 10433 - .
PITG_00002 CDS 10171 10433 - 2
PITG_00002 exon 10097 10114 - .
PITG_00002 CDS 10100 10114 - 0
したがって、各遺伝子について、「開始コドン」TYPE の位置に対して 1 から番号をやり直す必要があります。残念ながら、STRAND にリストされている遺伝子の番号は逆になっています (たとえば、PITG_00002)。したがって、これらのケースでは、番号付けは start_codon の POS2 を基準にして 1 から開始し、exon の POS1 で終了する必要があります。
そのため、エクソンごとに新しい POS1 と POS2 を取得する必要があり、これを POSA と POSB と呼びます。
各エクソンの POSA を取得するには、次のようにします。
POS1 of "exon" - POS1 of "start_codon" + 1 = POSA
各エクソンのPOSBを取得するには、次のようにします。
POS2 of "exon" - POS1 of "start_codon" + 1 = POSB
例として PITG_00004 を使用します。
POSA = 39526-39526 + 1 = 1
POSB = 40416 - 39526 + 1 = 891
そして、各遺伝子の各エクソンに対して同じことを行い、その遺伝子の start_codon 位置を使用して番号付けをリセットします。マイナス ストランドの場合を除き、その場合は次のことを行う必要があります。
各エクソンの POSA を取得するには、次のようにします。
POS2 of "start_codon" - POS2 of "exon" + 1 = POSA
各エクソンのPOSBを取得するには、次のようにします。
POS1 of "start_codon" - POS1 of "exon" + 1 = POSB
最終的に私はこれを取得したいと思います:
PITG_00002 exon 1 49
PITG_00002 exon 90 352
PITG_00002 exon 409 426
PITG_00003 exon 1 297
PITG_00004 exon 1 891
PITG_00004 exon 961 1246
PITG_00004 exon 1302 1969
+ストランドに対してこれを1つの方法で、-ストランドに対して別の方法で行う方法がよくわかりません。私は最近、より頻繁に python を使用していますが、perl も使用できます。