脚本 | Shell | 任意n个样本表达量超过0.5视为表达

2021-05-10  本文已影响0人  shwzhao

20210904 更新,今天上午完成了开题,最近没睡好觉,躺在床上,不知怎么想起了这段代码,发现真的非常之愚蠢。

只需下面简简单单的代码就能得到结果

awk '{a=0;for(i=2;i<=NF;i++){if($i>0.5)a++};if(a>=2)print}' a.tsv

以下为原文章:

文献上的一个简单的数据过滤问题。
很蠢地解决了。 :D

# 任意$1个样本的表达量超过0.5视为表达
$ cat aaaa.sh
awk '{for(i=2;i<=NF;i++){if($i > 0.5)print}}' $2 | \
uniq -c | awk -vb=$1 '{if($1>=b)print}' | \
sed -e 's/^[[:space:]]*//g' -e 's/[[:space:]]/\t/g' | \
cut -f 2-
$ cat a.tsv
a       0.8     0.6     0.5     0       0.7
b       1       0       0.3     0       0.8
c       0.5     0       0       0.4     0.9
d       0       0.5     0       0.5     1
e       1       0       0.4     0       0.8
f       0.6     0       0       0.7     0
g       0.7     0       0.8     0       2
$ bash aaaa.sh 2 a.tsv
a       0.8     0.6     0.5     0       0.7
b       1       0       0.3     0       0.8
e       1       0       0.4     0       0.8
f       0.6     0       0       0.7     0
g       0.7     0       0.8     0       2
$ bash aaaa.sh 3 a.tsv
a       0.8     0.6     0.5     0       0.7
g       0.7     0       0.8     0       2
上一篇 下一篇

猜你喜欢

热点阅读