培训――Perl编程入门介绍.pptx_第1页
培训――Perl编程入门介绍.pptx_第2页
培训――Perl编程入门介绍.pptx_第3页
培训――Perl编程入门介绍.pptx_第4页
培训――Perl编程入门介绍.pptx_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、通向perl的旅程,赵幸zhaoxing134287558836458832011年6月24日,可以学到什么,仅仅是一个入门旅程全篇没有一条一条的语法通过例子了解perl的最基本的东西真正的学习只有靠自己去学习,2,3,Outline,生物信息学简介Perl的魅力初识Perl认识Perl警惕小错误好习惯大家有安装Perl怎么去了解Perl,4,生物信息学的定义,生物信息学(Bioinformatics)是一门交叉学科,它包括了生物信息的获取、处理、存储、分发、分析和解释等在内的所有方面,它综合运用了数学、计算机科学和生物学的各种工具,来阐明和理解大量数据所包含的生物学意义。,5,生物数据的特点

2、,固定格式的一组数据为单位:数据的展示方式也是固定的几种形式数据量大,6,例如某参考序列,有6千万行,格式如下,chr1NNNNNNNNNNNNNNNTCTAGTATTTTTAAGTATCTTTGAGGAAGAGCACTaTATTccTGTGAGAAAAAGTGGAccGTGGAATtTGAGCACTGCTAGTATCGTCAAGGATACTTCCACTTAGGGAGAGGCTAGGAAGTGACGGCTTAchr2TTCACGTAAATGGAAGATGATTCTAGTTTGGGATCCTAAAGCAGCATTAA,为什么选择Perl,好用在处理海量生物学数据很好用,可以写出快速、占用资源很少

3、的程序。好学容易上手,容易写。,7,Perl的魅力,介于低级语言和高级语言之间,脚本语言中执行速度最快,8,Perl几乎不受限制,Perl很容易,Perl的速度通常非常快,Perl处理生物数据具有优势Bioperl包,初识Perl好用-不需要编译,写好即可运行,一个linux下的Perl例子,9,1、新建test.pl:vitest.pl,2、输入#!/usr/bin/perlprintHello,worldn;,3、保存退出::wq,4、运行perltest.pl,Windows下记事本即可,推荐使用编辑器(EditPlus,UltraEdit,Notepad)运行-cmdperltest.

4、pl,Perl程序的基本结构,程序开头:#!/usr/bin/perl用来执行这个文件的程序路径,10,usestrict;#若开头使用,一定要用my声明变量。,代码要以;结尾,变量:$a=2;my$b;,数组:a=(1,2,3);,哈希:%name=(gene1=2838,gene2=2344);,n换行;t制表符;s空白,认识Perl,数据Perl知道的数据控制结构Perl的控制结构数组最一般的哈希特别一点的文件操作怎样用Perl处理文件子程序需要时写写强大的正则表达式强大的Perl包,11,Perl知道的数据,标量、浮点7.25e-45:2*3:字符串$a=ab;$b=cd;$c=$a.

5、$b;$d=length($c);array=split(/s+/,$c);,12,7.2510-45,23,$c=abcd;,$d=5;,array=(ab,cd);,比较操作符,13,Perl的常用控制结构,if控制语句my$x=5;if($x=5)printXmustbe5n;elsif($x=4)printXmustbe4n;elseprintXisnot4or5n;,14,循环举例my$num=0;while($num10)$num+=2;print$numn;#打印出246810while(1)lastunless($num10)print$numn;$num=$num+2;for

6、循环和C语言的一样for($num=0;$num2344)key键gene1;value值2838哈希长度添加或修改元素访问哈希删除元素判断某个元素是否存在访问整个哈希,20,$length=keys%name,$namegene3=7836,$b=$namegene1,delete$namegene3,exists$namegene3,foreach或while等,printmyk=keys%name;printmyv=values%name;,访问整个哈希,my%name=(gene1=2838,gene2=2344,gene3=2567);whileforeach,21,while(my

7、($key,$value)=each%name)print$key=$valuen;,foreach(keys%name)print$_=$name$_n;,each:依次读取name中的对值,while(my($key,$value)=each%name)lastif($keyeqgene2);print$key=$valuen;则遇到keygene2之后,就退出循环了。但是假如之后又需要循环遍历这个name进行查找,即再次使用whileeach的话,会发现输出的结果不是从头开始,而是从上次last退出循环的下一处继续输出。,foreach(sortkeys%name)print$_=$na

8、me$_n;,22,#!/usr/bin/perl-wusestrict;my%name=(gene1=2838,gene2=2344,gene3=2567);print*firstwhicheach*n;while(my($key,$value)=each%name)lastif($keyeqgene1);print$key=$valuen;print*secondwhicheach*n;while(my($key,$value)=each%name)print$key=$valuen;,23,#!/usr/bin/perl-wusestrict;my%name=(gene1=2838,ge

9、ne2=2344,gene3=2567);print*firstforeach*n;foreach(keys%name)lastif($_eqgene1);print$_=$name$_n;print*secondforeach*n;foreach(keys%name)print$_=$name$_n;,好用-处理文件:很少的代码,做很多的事情,通过句柄操作大写(例如:INOUTFILE)open(IN,;#按行ate=;#全部open(OUT,OUT_file);printOUTAllisOK!n;Perl中以下句柄是默认的:常用的:STDINSTDOUTSTDERRARGVperldocp

10、erlvar:查看关于perl内部变量的说明,包括以上句柄,24,ate=;少用。如果文件很大,那么程序消耗的内存就会很大。,通过句柄OUT把要写入文件里的信息和文件联系起来。使用print函数。,按行读入文本文件Input_file,在每行最后加上tOK字符串后输出open(IN,;lastunless($line);chomp$line;print$linetOKn;,25,需要时写写子程序,格式subsubname.调用:如果传进来有参数,参数的顺序$_0、$_1,26,比较两个数的大小的函数submaxif($_0$_1)$_0;else$_1;$maxnumber=,27,subma

11、xmy($a,$b)=_;if($a$b)$a;else$b;,如果找出一堆数中最大的数的子函数可以怎么写?小提示:巧用shiftforeach,28,$maxinum=,好用-强大的正则表达式,使用格式匹配字符串file:/file/或m/file/s/e/a/匹配并替换$string=i:love:perl;$string=s/:/*/g;#此时$string=i*love*perl;模式匹配$string=www22cgi44;$string=s/(d+)/$1*2/e;#(d+)代表$string中的一个或多个数字字符,将这些数字字符执行*2的操作,因此最后$string变成了www4

12、4cgi88。,29,正则表达式的妙用,例如计算data.txt文件中每条染色体中胞嘧啶的个数,假设文件很大。按行读区分染色体不分大小写,匹配碱基c读到最后一行,输出最后一条染色体的结果,并退出循环。何时输出结果。,30,#!/usr/bin/perlusestrict;my($number,$count,$print_flag)=(0)x3;my($line,$chr);open(IN,;chomp($line);unless($line)print$chrt$numbern;last;if($line=/()(wd_+)/)if($print_flag)print$chrt$numbern

13、;$number=0;$chr=$2;$print_flag=1;next;$count=+($line=s/c/c/ig);$number=+$count;,#print_flag做为输出标记,#(0)x3等同于(0,0,0),#按行读,#去掉行尾的换行符,#unless后面条件为假时执行。,#读到最后一行,输出最后一条染色体的结果,并退出循环。,#区分染色体,模式匹配,#$1:();$2:(w+d+),#记录替换的次数/i不区分大小写/g依次操作,直至行尾。效率比把每行拆分成一个一个字符去匹配效率高。,#记录总数,好用-强大的Perl包,例如使用t检验包对fort1和fort2两组数做t检

14、验,返回p值useStatistics:TTest;my$ttest=newStatistics:TTest;$ttest-load_data(fort1,fort2);$p_value=$ttest-t_prob;,31,好学,语法简单代码易懂很少的代码,做更多的事情,让人更有兴趣.其他的。,32,警惕小错误,字符编码拷贝的代码直接粘贴,忽略检查是否为英文字符;包括空格、标点符号都必须为英文方式下的行尾没加分号;括号不匹配()使用了usestrict;,变量却未定义useofuninitializedvalue(.)atlineXXXdefined和undef字符串大小判断和数字的不同。,3

15、3,出了错,怎么办?,语法错误逻辑错误一般大家都会事先列出所有可能的情况,再去构思程序框架。如果这样了,还是有逻辑错误怎么办?最常见错误是死循环。原因考虑不周全。我的经验是把关键数据输出,查找出现死循环的位置。,34,好习惯大家有,好的编程习惯是非常重要的。代码可读性,健壮性关键算法要注释变量命名也很重要。不好的命名:$A,$B,$a1,$a2,$t好的命名:$exonA,$startPos,$totalGene命名经验分享:驼峰式匈牙利命名法,35,程序参数输入,perltext.plin_fileout_file参数传进来默认放入句柄ARGV即ARGV=(in_file,out_file)

16、perltext.pl-oout_file-iin_file,36,my$in=ARGV0;my$out=ARGV1;open(IN,$out);,useGetopt:Long;my($in,$out,$help);GetOptions(i=s=$in,o=s=$out,h=$help,);,#使用GetOptions函数,需要这个包支持。,如何实现输出帮助文档,输入perltest.pl得到以下帮助信息Usage:perltest.ploptionsOptions:-i:inputfile-h:gettheusage.,37,my$usage=:inputfile-h:gettheusage.INFOdie$usageif(!$in|$help);,安装Perl及Perl包,安装perltar-jxvfperl-5.13.11.tar.gzcdperl-5.13.11./configure-prefix=/usr/perl_5.13.11makemakeinstall安装perl包perlMakefile.PLprefix=/usr/per_package/make,怎样去了解Perl,使用帮助perldoc例如:perldoc-feach官网:http:/w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论