0

問題: 出力ファイル「single_hits.txt」が空です:

cut -f10 genome_v_trans.pslx | sort | uniq -c | grep '      1 ' | sed -e 's/      1 /\\\</' -e 's/$/\\\>/' > single_hits.txt

Mac OSX 10.7.5 で使用するスクリプトを Linux からダウンロードしました。機能していないため、いくつかの変更を加える必要があります。一意のコンティグを除くすべてを除去するためにフィルタリングする必要がある DNA データの 9 つの「コンティグ」があります。blat は、2 つのデータセットを比較し、これらのコンティグを含む .pslx ファイルを出力するために使用されます。

964 0   0   0   0   0   3   292 +   m.1 1461    0   964 3592203 ...
501 0   0   0   0   0   3   468 -   m.1 1461    960 1461    5269699 ...
1168    0   0   0   1   2   7   1232    -   m.7292  1170    0   1170    5233270 ...

次に、このスクリプトは、上位 2 つ (m.1) などの同一のコンティグを削除することになっています。

4

1 に答える 1

1

これはあなたが与えた限られたデータでうまくいくようです、

grep -v `awk '{print $10}' genome_v_trans.pslx | uniq -d` genome_v_trans.pslx

重複の代わりに <> を使用したくない場合は、重複したエントリを sed で置き換えることができます。次に、次のようにします。

IFS=$(echo -en "\n\b") && for a in $(awk '{print $10}' genome_v_trans.pslx | uniq -d); do sed -i "s/$a/<>/g" genome_v_trans.pslx; done && unset IFS

結果:

964 0 0 0 0 0 3 292 + <> 1461 0 964 3592203 ...

501 0 0 0 0 0 3 468 - <> 1461 960 1461 5269699 ...

1168 0 0 0 1 2 7 1232 - m.7292 1170 0 1170 5233270 ...

または、singlehits ファイルでそれが必要な場合:

IFS=$(echo -en "\n\b") && for a in $(awk '{print $10}' dna.txt | uniq -d); do sed "s/$a/<>/g" dna.txt >> singlehits.txt; done && unset IFS

SINGLE_TMP=/tmp/_single_tmp_$$ && awk '{if ($10 == "<>") print}' singlehits.txt > "$SINGLE_TMP" && mv "$SINGLE_TMP" singlehits.txt && unset SINGLE_TMP

またはよりエレガント:sed -ni '/<>/p' singlehits.txt

シングルヒット.txt:

964 0 0 0 0 0 3 292 + <> 1461 0 964 3592203 ...

501 0 0 0 0 0 3 468 - <> 1461 960 1461 5269699 ...

于 2014-08-15T09:47:24.323 に答える