首页 >> 学习 >> 应用实例 >> Linux在生物信息数据处理中的应用
Linux在生物信息数据处理中的应用

本节重要性:★★☆☆☆    本节难度:★☆☆☆☆

日常的生物信息学数据处理的任务,基本上都可以利用Linux命令和shell编程完成。简单的任务使用Linux命令,稍复杂点的再用Linux命令+不同的选项,再复杂点的就用管道把不同的命令(包括选项)组合起来,还解决不了的就用shell脚本。如果只是简单的判断循环,在命令行里就可以完成。因此,熟练掌握Linux命令和shell编程,使用shell命令行,就可以完成大部分的生物信息学日常数据处理任务。

前面的学习中,我们已经接触过一些简单地生物信息学数据处理任务。下面再给出一个数据处理中经常会碰到的任务。

[peter@ibi98 example]$ cat animal_qiang
dog
chicken
sheep
cat
[peter@ibi98 example]$ cat animal_ming
dog
cow
cat
pig
[peter@ibi98 example]$ for i in `cat animal_qiang`;do grep $i animal_ming;done
dog
cat

上例中,文件animal_qiang是小强养的动物,文件animal_ming是小明养的动物,任务是找出两个人养的相同的动物。我们利用for循环,每次取出文件animal_qiang的一行,保存到变量i,再到文件animal_ming中查找包含变量i的值的行,这样就可以把共同的动物找出来。

但如果小明养的是小狗,文件animal_ming的内容是:

[peter@ibi98 example]$ cat animal_ming
doggie
cow
cat
pig

再用上面的循环结果就不是预想的:

[peter@ibi98 example]$ for i in `cat animal_qiang`;do grep $i animal_ming;done
doggie
cat

这时可将命令改为:

[peter@ibi98 example]$ for i in `cat animal_qiang`;do grep "^$i$" animal_ming;done
cat

在$i的前面和后面分别加一个行首(^)和行尾($)的符号,从而保证精确查找。

更复杂一点的情况,在动物名后还有数量,如果动物名和数量之间是制表符分割,可以将上面的行尾符号换成制表符。

[peter@ibi98 example]$ cat animal_qiang
dog     1
chicken 20
sheep   5
cat     2
[peter@ibi98 example]$ cat animal_ming
doggie  3
cow     4
cat     1
pig     10
[peter@ibi98 example]$ for i in `cat animal_qiang |cut -f1`;\
do grep "^$i " animal_ming;done
cat     1

上面的任务也可以用while循环实现:

[peter@ibi98 example]$ cat animal_qiang |cut -f1 |while read i;\
do grep "^$i     " animal_ming;done
cat     1

注意在命令行输入制表符时,需要先按Ctrl+v,然后再按Tab键。如果直接按Tab键,就是命令行补齐,是没法输入制表符的。

在生物信息学数据处理中,也会有类似的任务,如处理BLAST输出的表格格式的结果(BLAST中blastall命令的-m 8选项和BLAST+中blastp命令的-outfmt 6选项)时,可将上述命令稍作修改使用。

后面的几节内容,我们将学习几个Linux命令和shell编程在生物信息学数据处理中实际应用的例子。

<<上一节  下一节>>