美文网首页生物信息数据科学
25.《Bioinformatics-Data-Skills》之

25.《Bioinformatics-Data-Skills》之

作者: DataScience | 来源:发表于2021-06-22 10:08 被阅读0次

《Bioinformatics-Data-Skills》之管道

Unix的一大哲学思想就是模块性。我们不仅需要学习一个工具如何使用,还需要学习如何将工具组装起来解决更复杂的问题。通过管道符号我们可以提高代码的可读性与模块化,这里通过一个例子来说明:

例如我们想要统计一个文本文件里面所有单词的出现次数前10的单词与出现次数,可以采用下面的代码:

cat README.md | tr -cs A-Za-z '\n' | tr A-Z a-z | sort | uniq -c | sort -rn | sed 10q

结果为:

     11 fastq
     10 data
      8 seqs
      8 r
      5 the
      5 sequencing
      5 sequences
      5 quality
      4 of
      3 we

代码解析:

1. cat README.md | 
2. tr -cs A-Za-z '\n' | 
3. tr A-Z a-z | 
4. sort | 
5. uniq -c | 
6. sort -rn | 
7. sed 10q

每行的意思为:

  1. README.md内容作为输入
  2. tr是翻译程序,-c参数代表取第一个输入(A-Za-z)的补集,即非字母的字符;-s表示合并相邻的字符。这行的意思是将(相邻的多个)非字母的字符转换为换行符,这样我们就得到了每个单词为一行的结果;
  3. 将大写字母转换为小写字母;
  4. 将每行按字母顺序排序,这样同样的单词是想念出现的;
  5. 去除重复出现的单词,通过-c参数统计每个单词的出现次数;
  6. 按数字(-n)逆向(-r)排序;
  7. 打印前10行信息并退出。

可以看出每个操作都是符合我们正常的逻辑思维顺序的,这样的操作无疑更方便可读与模块化,也会减少Bug的出现。

使用上述的命令更加快捷,但是使用更完善的脚本文件有更好的记录性。不过无论采用什么方式最重要的是将你的操作记录下来,方便以后的检查与重新运行。

相关文章

网友评论

    本文标题:25.《Bioinformatics-Data-Skills》之

    本文链接:https://www.haomeiwen.com/subject/uqppyltx.html