因为疫情,还呆在家中,网课仍在进行,预计5月份开学。因为一些机缘来学习下perl语言~~~
基础准备
1、视频教程
perl教程来自基因学苑分享在B站的Perl语言与生物信息视频教程,还提供了配套代码。感谢大神们的无私分享~
根据视频中介绍,简单归纳perl的两大优点一是内嵌正则表达式、二是能创建哈希数据结构。这两个特性为主使得perl具有强大的文本处理功能。由于生信本质上也就是处理ATCG或者氨基酸序列等字符化的操作。因此perl是生物信息领域的一大利器。
2、Linux环境与vim
2.1 虽然window也可以支持perl,但是操作比较麻烦。而Linux直接支持perl,并且生信操作一般也都是用Linux。因此第一次在腾讯元花了10元钱买了1核的学生云服务器(一个月),用于接下来的perl学习;
2.2 因为需要在Linux中,编辑perl脚本;而常用的则是vi/vim文本编辑器,因此需要对其常规编辑操作有一定的了解。参见之前Linux的学习笔记。
一个简单例子
1、目的
- 对BLAST比对结果进行进一步筛选--过滤掉同源性低的结果;
- 即根据第三列比对identity值(>90);第四列比对长度(>200)这两个条件进行过滤。
2、perl处理过程
- 逐行读取Blast文件到内存;
- 然后将每行内容存储为一个标量,利用分隔符分成若干元素组成数组;
- 再根据第三个(列)、第四个(列)值进行筛选。若满足条件,则写入目标文件;若不能则过滤;
- 重复2与3步骤处理接下来每一行数据。
3、代码实现
#!/usr/bin/perl -w #标准开头格式
open IN,"blast_m8.out"; #open the file
while (<IN>) {
chomp; #\n,去除每行末尾的换行符
my @line=split /\s+/,$_; #将读入的1行根据空格分成若干元素,存储到一个数组
if ($line[2] >=50 && $line[3] >=100) { #根据数组的第三与第四个元素进行过滤
print "$_\n";
} else {
next;
}
}
close IN;
# 保存退出vim编辑器,执行下述命令
perl filter_blast.pl
- !注意!:perl脚本中每行最后都要以
;
结尾 -
如下图,可以看出满足条件的行被输出到屏幕上了,当然也可以保存到目标文件中。
通过这个小例子,简单了解下perl在生物信息学中的应用。
那接下来就开始perl的入门之旅吧~