
snps ID には次のデータセットがあります。
POS ID
78599583 rs987435
33395779 rs345783
189807684 rs955894
33907909 rs6088791
75664046 rs11180435
218890658 rs17571465
127630276 rs17011450
90919465 rs6919430
および遺伝子参照ファイル
genename name chrom strand txstart txend
CDK1 NM_001786 chr10 + 62208217 62224616
CALB2 NM_001740 chr16 + 69950116 69981843
STK38 NM_007271 chr6 - 36569637 36623271
YWHAE NM_006761 chr17 - 1194583 1250306
SYT1 NM_005639 chr12 + 77782579 78369919
ARHGAP22 NM_001347736 chr10 - 49452323 49534316
PRMT2 NM_001535 chr21 + 46879934 46909464
CELSR3 NM_001407 chr3 - 48648899 48675352
遺伝子をSNpsの位置と一致させようとしています。
POS >= txstart および POS<= txend
たとえば、次の列を含むデータセットが必要です。
遺伝子名SNPID染色体位置txstart txend
答え1
私の知る限り、あなたのサンプルファイルにはあなたが説明するものと一致するものはありません。
最初のファイルを次のように変更すると
CHROM POS ID
chr7 78599583 rs987435
chr15 33395779 rs345783
chr1 189807684 rs955894
chr20 33907909 rs6088791
chrx 1234567 rsMadeUp
chr12 75664046 rs11180435
chr1 218890658 rs17571465
chr4 127630276 rs17011450
chr6 90919465 rs6919430
構成項目を範囲内に含めます。
genename name chrom strand txstart txend
CDK1 NM_001786 chr10 + 62208217 62224616
CALB2 NM_001740 chr16 + 69950116 69981843
STK38 NM_007271 chr6 - 36569637 36623271
YWHAE NM_006761 chr17 - 1194583 1250306
SYT1 NM_005639 chr12 + 77782579 78369919
ARHGAP22 NM_001347736 chr10 - 49452323 49534316
PRMT2 NM_001535 chr21 + 46879934 46909464
CELSR3 NM_001407 chr3 - 48648899 48675352
それから
awk '
NR == FNR && FNR > 1 {snp[$2]=$3; next}
FNR > 1 {
for (p in snp) {if (p>=$5 && p<=$6) print $1, snp[p], $3, p, $5, $6}
}
' snpsid generef
YWHAE rsMadeUp chr17 1234567 1194583 1250306
答え2
これを達成するためにawkを使用することができます。
awk 'FNR==1 {next} FILENAME=="snipsid" {k++; POS[k]=$2; ID[k]=$2;} \
FILENAME=="gene" {i++; if(POS[i]>=$5 && POS[i]<=$6) \
print $1, ID[i], $3, POS[i], $5, $6} \
' snipsid gene >out_file