1

私はGWASデータを扱っており、連鎖不平衡に依存しない遺伝子座を選択しようとしています. 私のアプローチは、すべての有意な SNP を最大から順にランク付けしてから、1KG のリストで上位の SNP と連鎖不平衡 (r2 > 0.2) にある SNP をすべて削除することです。

SNP を最多 --> 最下位からランク付けしたファイルがあります。

rs2021722
rs1117490
rs2844776
rs971570

また、これらのそれぞれでLDにあるSNPをリストしたファイルもあります(SNAPから):

SNP  Proxy  Distance    RSquared    Chromosome  Coordinate_HG18
rs2021722   rs2021722   0   1.000   chr6    30282110
rs2021722   rs885912    502 1.000   chr6    30282612
rs2021722   rs971570    1618    1.000   chr6    30280492
rs2021722   rs2844776   2304    1.000   chr6    30279806
rs2021722   rs1117490   3621    1.000   chr6    30278489
rs1117490   rs1117490   0   1.000   chr6    30278489
rs1117490   rs2517610   230 1.000   chr6    30278259
rs2844776   rs971570    686 1.000   chr6    30280492
rs2844776   rs1117490   1317    1.000   chr6    30278489
rs971570    rs2021722   1618    1.000   chr6    30282110
rs971570    rs1117490   2003    1.000   chr6    30278489

最初のファイルの SNP ID を読み取り、2 番目のファイルでその SNP ID を見つけ、2 番目のファイルの「プロキシ」列を読み取るスクリプトを実行したいと考えています。2 番目のファイルのプロキシ SNP のいずれもが最初のファイルの低い行番号にない場合 (つまり、ファイルの上位にあるほどランクが高い)、その SNP ID を出力ファイルに書き込むようにします。

この例では、出力ファイルは次のようになります。

rs2021722
rs117490

私は awk と bash の経験がありますが、どちらも非常に新しく、このタスクをどこから始めればよいかわかりません。どんなポインタでも大歓迎です。

4

2 に答える 2

0

出力ファイルで何をしようとしているのか完全にはわかりませんが、最初のファイルから 2 番目のファイルの SNP ID を見つけるには、これを使用できます。

while read line; do
    val="$line";
    echo "val: $val";
    while read line2; do
       val2=$(echo "$line2" | awk '{print $1}');
       if [ $val == $val2 ] ; then
           echo $val "=" $val2;
           proxy=$(echo "$line2" | awk '{print $2}');
           echo "proxy = $proxy";
       fi
    done < file2.txt
done <file1.txt

基本的に、最初のファイルをループし、その行が存在する場合は 2 番目のファイルをチェックし、存在する場合は 2 番目のフィールド (プロキシ) を取得します。出力ファイルのことをよりよく説明できる場合は、試してみます。これでうまくいくはずです。

于 2014-08-08T16:04:24.360 に答える