como mapear snps para ref gene

2

Eu tenho o seguinte conjunto de dados sobre o ID snps

  POS ID    
    78599583    rs987435
    33395779    rs345783
    189807684   rs955894
    33907909    rs6088791
    75664046    rs11180435
    218890658   rs17571465
    127630276   rs17011450
    90919465    rs6919430

e um arquivo de referência do gene

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

Estou tentando combinar os genes com a localização SNps, então inclua os snps que tiverem

POS > = txstart e POS < = txend

por exemplo, eu quero um conjunto de dados que tenha as seguintes colunas

nome genérico SNPID chrom position txstart txend

    
por Marwah Soliman 20.01.2017 / 01:06

2 respostas

2

Até onde eu posso ver, seus arquivos de amostra não contêm nenhuma correspondência do tipo que você descreve.

Se modificarmos o primeiro arquivo para

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

de tal forma que a entrada inventada fica no intervalo

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

então

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
    
por 20.01.2017 / 04:05
0

Você pode usar o awk para isso:

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
    
por 20.01.2017 / 02:39