今天是生信星球陪你的第75天
你想找辆共享单车,发现满街都是别家车,没有一辆你能骑。
你想学点生信,搜了“初学者教程”,满眼尽是高大上,没有一句能看懂。
终于你跨越茫茫宇宙,来到生信星球,发现了初学者的新大陆!
.子程序
之前用过了chomp、print等,perl还能让用户自定义函数,方便利用已有的代码
使用定义【不能以数字开头,最好名字和函数功能相关,不要和内置函数重名】
每个子程序都有一个返回值,而运行子程序要的就是返回值
最简单的使用:
子程序的参数与返回值--输入与输出:
上面的简单使用,没有加上任何参数就会输出字符串这样一个标量;
当然,也可以对子程序输入数组、哈希、文件等参数,然后输出标量、数组或者哈希。
默认将子程序的最后一个表达式的结果作为子程序的返回值,如果想返回中间一个表达式,使用 函数
这里以一个加法运算来学习:
统计fasta信息的子程序:
程序思路:输入有一个,gene id与序列文件对应的哈希列表【格式为id=序列文件】。输出要有三列,一列是gene id,一列是基因数量,一列是基因平均长度。
读取fasta文件时,将修改分隔符为,这样一次就能读进来整段序列,将每段序列存储到哈希中,序列的id为哈希的键,序列为值
.Perl常见问题:
Perl的编程过程中,会出现各种各样的问题,需要不断调试。有时候很头疼的就是,即使按照别人的程序敲一遍还是会报错
错误一:忘记加分号
分号在Perl中代表一个完整的语句,忘记加分号就会提示语法错误,并且运行会给出具体出错行数
这里显示第四行有问题,如果在一个大程序中,要快速跳转到某一行,使用 ,因为上一行没有分号
错误二:是否需要用my定义
很多时候需要使用 编译命令,这是就要要使用 来编译变量,而且不能重复定义
错误三:拼写错误
这个在很多编程中都会存在,拼写错误会提示变量没有被声明
这个问题在文本编辑器如Vim中会帮助我们解决,如果某个变量输入错误,比如输入为 ,Vim会通过颜色不同(正确有颜色,错误为白色)
对于变量输入,最好使用vim自带的 或 的自动补全功能,这样可以避免错误
错误四:大括号的使用
尤其使用if嵌套循环时,每一个大括号是一个程序块,如果缺失某一对配对的大括号其中一个,就会提示 ;如果大括号多了一个,会提示
避免报错小技能:
(check)运行之前先检查一下是否书写有问题
(debug)一种交互的perl编程模式,适用于长的脚本。 列出命令的10行;如果要列出某几行,就用这样的
详细信息可以参考
.正则表达式:重要的特性!
Perl的正则表达式是内建的,为Perl提供了快速、灵活的字符串处理
Perl中的正则也叫做“模式匹配”,是用来匹配某字符串的模版;
日常使用中,模式匹配无处不在,例如使用搜索引擎,在搜索框内输入关键字,就能返回信息,他就是利用了正则表达式
一个简单的例子:
元字符:
替换单个字符(一对一替换),不能替换换行符
转义符,例如匹配本身要使用
表示数量的
【例如在root用户下,使用 叫做“自杀模式”】,与配合使用表示任意字符出现0次或多次 【0—∞】
表示至少一次 【1—∞】
表示0次或1次【范围最小】
花括号中指定重复次数,例如匹配1-5次bioinfo中的o
如果要制定整个单词次数,用小括号进行分组 这个表示匹配bioinfo3次;表示匹配bioinfo一次以上
关于字符集:
匹配字符集的单个字符 匹配bat、cat、fat其中一个,等同于 或者更简单的 (表示b-f连续的字母加wz)
[a-z]、[A-Z]、 、
表示空白,例如
反义字符集:利用 ,例如 等于 等于,表示不匹配数字 【反斜线加大些字母表示不匹配】
要排除某个匹配,用
生信模式匹配小练习:
现在有一些序列,下载地址 打开后是这样:
想寻找开头是CCG,结尾是TTG的序列
单词锚定:
挖掘文本信息:
一般本地blast的format 0结果中,会有匹配的分值(Score)、期望值(Expect)、一致性(Identities)、准确度(Positives)、Gaps等信息,可以挖掘这些信息
改进版:
另外还有一个s(替换模式),例如
对序列进行处理:
得到序列的反向/互补序列
序列全变大些/小写
另外这些大小写语句除了在s模式下使用,还能在双引号内使用,例如在print 语句中格式化输出
输出结果是 【注意这里的\E是终止前面\U命令的意思】
贪婪匹配 -- 匹配尽可能多的内容
一般 会匹配尽量多的内容,比如上个例子 中,如果匹配模式是 ,即使中间也出现了CAT,程序也不会停下,他会一直匹配到结尾的CAT,这就是贪婪;
贪婪的对立面就是节俭,这种模式可以在 的基础上加上 ,也就是 就输出最短的序列
格式化序列
有时一个fasta文件中序列长短不一,并且有的换行有的不换行,这样看起来就很难看。这时就可以将序列格式化,让每行保证一定量的字符【可以自定义】,并且加换行符。
测试fasta下载:
初学生信,很荣幸带你迈出第一步。
领取专属 10元无门槛券
私享最新 技术干货