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