snps를 참조 유전자 파일에 매핑하는 방법

snps를 참조 유전자 파일에 매핑하는 방법

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

관련 정보