生信编程Perl教案大纲
Posted 沈梦圆
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生信编程Perl教案大纲相关的知识,希望对你有一定的参考价值。
最近生信技能树要举办武汉线下培训班,我呢还是继续之前的工作,Perl生信编程的教学。到时候Pyhon和Perl一起上课,很有可能的情况是没有一个人来上Perl的课,想想好尴尬。这两天晚上总结了一个授课大纲,前半部分内容写了点。
1.1. 认识Perl(了解)
Perl: Practical Extraction and Report Language (实用报表提取语言)
由 Larry Wall 在1987年创造,以实用、快速为开发目标,由于其灵活性被称为脚本语言的瑞士军刀。
Perl的理念:There's More Than One Way To Do It. (不知一种方法来做一件事) python 的理念:There's Only One Way To Do It.
Perl发展史
Perl的优缺点
优点: 语法简单容易自由灵活; 运行速度快,Perl解释器直接对源代码程序解释执行; 免费开源; 正则表达式强大; 写小脚本处理文本数据方便,单行命令替代sed、awk;
缺点: 内置变量符不易记忆; 底层社区不活跃; 优秀模块少; 可读性低,不适合写大程序及团队合作;
Perl的应用场景
文本处理:工程领域数据处理、生物学数据处理
Web网站:如Yahoo、Amazon,Web页面也是文本文件,Perl有TCP/IP通信能力
数据库处理:Perl语言有大量的拓展可以用来直接与各种主流数据库进行通信
邮件处理和FTP功能自动化
作图
只有想不到的,没有Perl做不到的。
1.2. 第一个Perl程序
开发环境的搭建
在Linux下,一般Perl都是自带的,但可能存在版本过旧的问题,所以想要用最新版的可以自己下载安装包进行安装。
在Windows下使用,可以选择安装Active Perl或者Strawberry Perl,最后添加到环境变量。
编写Perl程序方法
vi (Linux)
1: 在工作目录打开git bash
2: 在命令行敲入
vi test.pl
3:编写程序
i 进入插入模式;
#! /usr/bin/perl
use warnings;
use strict;
print "biotrainee.com
按esc 后,输入:x 指令,再按enter即可退出
4: 运行程序
直接
./test.pl
或者perl test.pl
notepad++ (Windows)
1:编写程序
2:运行程序
在程序所在文件夹处运行,同vi的程序运行方法。
单行命令(Linux/Windows)
练一练:编写一个程序,输出
biotrainee.com
1.3. 良好的编程习惯
使用内建警告信息
在运行时,加上-w命令行
perl -w my_program.pl
程序中加上-w命令行
#/usr/bin/perl -w
对于perl5.6以后的版本,还可以通过warnings指令打开
#!/usr/bin/perl
use warnings;
若要查看更详细的问题描述,在程序中加入:
use diagnostics;
一般写程序,同时加上:
use strict;
use warnings;
使用帮助文档perldoc
注释
#!/usr/bin/perl
use strict;
use warnings;
my $usage=qq{$0 query_cover.txt acc2geneid.db acc2geneid.txt};
die "$usage " if scalar @ARGV!=3;
my($query_cover,$acc2geneid_db,$acc2geneid)=@ARGV;
open INPUT1,"$query_cover";
open INPUT2,"$acc2geneid_db";
open OUTPUT,">$acc2geneid";
my (@sub,%geneid2acc);
while(<INPUT2>){
chomp($_);
@sub=split /t/,$_;
$geneid2acc{$sub[1]}=$sub[0];
}
while(<INPUT1>){
chomp($_);
if(exists($geneid2acc{$_})){
print OUTPUT "$_ $geneid2acc{$_} ";
}
}
#!/usr/bin/perl
use strict;
use warnings;
# @author: Shenmy
# @contact: mengyuanshen@126.com
# @time: 2017/9/18 20:05
# @desc: 将NCBI的Protein_ACC号转成NCBI的geneid
# 将外部参数导入,并且判断个数是否为3
my $usage=qq{$0 query_cover.txt acc2geneid.db acc2geneid.txt};
die "$usage " if scalar @ARGV!=3;
my($query_cover,$acc2geneid_db,$acc2geneid)=@ARGV;
# 打开文件句柄
open INPUT1,"$query_cover";
open INPUT2,"$acc2geneid_db";
open OUTPUT,">$acc2geneid";
# 根据已有数据库,逐行读取acc2geneid.db,对数据根据 分隔符进行拆分,构造NCBI的Protein_ACC号为键,NCBI的geneid为值的哈希表
my (@sub,%geneid2acc);
while(<INPUT2>){
chomp($_);
@sub=split /t/,$_;
$geneid2acc{$sub[1]}=$sub[0];
}
# 逐行读取存有待转换的Protein_ACC号文件,通过exists行数判断%geneid2acc哈希中是否存在以该ACC号储存的键值对,如果有就输出
while(<INPUT1>){
chomp($_);
if(exists($geneid2acc{$_})){
print OUTPUT "$_ $geneid2acc{$_} ";
}
}
通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性
注释的分类:单行注释/多行注释
一般都是使用#进行单行注释;
多行注释可以借助编辑器,在notepad++中的快捷键是Ctrl+Q;
也可以使用
=代码
代码
=cut
注释的作用
使用注释程序示例
未使用注释程序示例
1.4. 变量以及类型
变量的定义
变量的类型
特殊变量
$_ 默认变量
$0 程序名称
$. 当前句柄当前行号
@ ARGV 命令行参数
1.5. 标示符和关键字
标示符
标示符的规则
关键字
1.6. 输出和输入
1.7. 运算符
1.8. 比较、关系运算符
比较运算符
逻辑运算符
1.9. 作业
1.10. 附录-推荐的Perl电子书
2. 判断语句和循环语句-30min
2.1. 判断语句介绍
2.2. if-else/elseif/if嵌套
2.3. 循环语句介绍
2.4. while循环/while循环的嵌套
2.5. for循环
2.6. break和continue
2.7 总结
2.8 作业
3. 标量、数组、哈希-30min
3.1. 标量
3.2. 数组
3.3. 哈希
4. 函数-30min
常用内置函数(标量和字符串函数/数组函数/哈希函数/list函数)
子函数(用户自定义函数)
5. 文件操作、综合应用-15min
5.1. 文件操作介绍
5.2. 文件的打开与关闭
5.3. 文件的读写
5.4. 应用
5.5. 作业
6. 目录操作-15min
7. 包、模块安装和使用-5min
8. 正则表达式-10min
9. 单行命令-10min
10. 面对对象/数据库连接(了解)-5min
11. 常用代码整理
12. 实战练习题(10题)
~ Perl编程的功力又要上涨了~
以上是关于生信编程Perl教案大纲的主要内容,如果未能解决你的问题,请参考以下文章