Download presentation
Presentation is loading. Please wait.
1
生 物 信 息 学 Bioinformatics 巩晶 癌症研究中心 山东大学 医学院
2
编程基础第二部分
3
2. Perl – What is Perl ? http://www.perl.org
Practical Extraction and Report Language Interpreted Language Optimized for String Manipulation and File I/O Full support for Regular Expressions
4
2. Perl – Running Perl Scripts
Download ActivePerl from ActiveState Just run the script from a 'Command Prompt' window or a ‘Terminal' Put the following in the first line of your script #!/usr/bin/perl or #!C:/Strawberry/perl/bin/perl.exe Run the script perl script_name.pl
5
2. Perl – Basic Syntax Statements end with semicolon ‘;’
Comments start with ‘#’ Only single line comments Variables You don’t have to declare a variable before you access it You don't have to declare a variable's type
6
2. Perl – Scalars and Identifiers
A variable name Case sensitive Scalar A single value (string or numerical) Accessed by prefixing an identifier with '$' Assignment with '=' $scalar = expression
7
2. Perl – Strings Quoting Strings With ' (apostrophe)
Everything is interpreted literally With " (double quotes) Variables get expanded With ` (backtick) The text is executed as a separate process, and the output of the command is returned as the value of the string $output='Hello\nWorld!'; print $output; $output="Hello\nWorld!"; print $output; print `java -version`;
8
2. Perl – Comparison Operators
String Operation Arithmetic lt less than < gt greater than > eq equal to == le less than or equal to <= ge greater than or equal to >= ne not equal to != cmp compare, return 1, 0, -1 <=> 符号 A B C … X Y Z a b c … x y z 由 小 到 大
9
2. Perl – Logical Operators
Operation ||, or logical or &&, and logical and !, not logical not xor logical xor a xor b = (a' and b) or (a and b')(a'为非a)
10
2. Perl – String Operators
Operation . string concatenation x string repetition .= concatenation and assignment $string1 = "potato"; $string2 = "head"; $newstring = $string1 . $string2; #"potatohead" $newerstring = $string1 x 2; #"potatopotato" $string1 .= $string2; #"potatohead"
11
2. Perl – Perl Functions Perl functions are identified by their unique names (print, chop, close, etc) Function arguments are supplied as a comma separated list in parenthesis. The commas are necessary The parentheses are often not Be careful! You can write some nasty and unreadable code this way!
12
指令:length 语法:length($string) 说明:求出字符串$string的字节(bytes)值。 示例:$string="Perl5"; $size=length($string); #这时$size=5; 指令:substr 语法:substr($string,offset,length) offset代表起始字符的位置,length代表引用的字符串长度,如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始指定字符。(字符串中第一个字符的位置为0,不是1) 示例: $s=substr("perl5",2,2); #这时$s="rl"; $s=substr("perl5",2); #这时$s="rl5"; $s=substr("perl5",-2,2); #这时$s="er"; 指令:index 语法:index($string,$substring,position) $substring是要寻找的字符;position代表从哪一个位置开始寻找,假如省略position就从头开始找起。 说明:返回所要找寻的字符在一字符串$string中的位置,如果在字符串中找不到字符的话,则会返回-1这个值。 示例: $s=index("perl5","p"); #这时$s=0 $s=index("perl5","l",2); #这时$s=3 $s=index("perl5","pell"); #这时$s=-1
13
2. Perl - Arrays Array Operators A named list
Dynamically allocated, can be saved Zero-indexed Shares list operations, and adds to them Array Operators @: reference to the array (or a portion of it, with []) $: reference to an element (used with []) = ("A", "T", "C", "G"); print $arr[2]; print $x
14
指令:scalar =("A","B","C"); #这时$num=3; 指令:reverse 指令:sort 说明:将数组中的元素由小到大排序,如果要由大到小排序的话,要加上reverse这个函数。 指令:pop
15
指令:shift 指令:push 指令:unshift 指令:join 这时$total="one:two:three";
16
Array Example #!/usr/bin/perl # Simple List operations
# Address an element in the list @stringInstruments = ("violin","viola","cello","bass"); @brass = ("trumpet","horn","trombone","euphonium","tuba"); $biggestInstrument = $stringInstruments[2]; print("The biggest instrument: ", $biggestInstrument, "\n"); # Join elements at positions 0, 1, 2 and 4 into a white-space delimited string print("orchestral brass: ", join(" "\n"); ################################ @unsorted_num = ('3','5','2','1','4'); @sorted_num = ); # Sort the list print("Numbers (Sorted, 1-5): ", @sorted_num, Array Example #Add a few more numbers @numbers_10 ('6','7','8','9','10')); print("Numbers (1-10): ", @numbers_10, "\n"); # Remove the last print("Numbers (1-9): ", # Remove the first print("Numbers (2-9): ", # Combine two ops print("Count elements (2-9): ", ),
17
2. Perl – if 语句 #!/usr/bin/perl $a=10; $b=15; if ($a > $b)
{ print "a=$a is bigger!"; } else { print "b=$b is bigger!"; } ########### if ($a == 5) { print '$a is 5'; } elsif ($a == 10) { print '$a is 10'; } elsif ($a == 15) { print '$a is 15'; } { print '$a is not (5 or 10 or 15)'; } if 和 else 可以不成对出现,即,可以只有if没有else elsif可以有许多个
18
2. Perl – for 语句 #!/usr/bin/perl @a=(1,12,33,25,98,34,55,76,18,10);
for ($i=0; $i<$n; $i++) { print "No.$i = $a[$i]\n";} ############ foreach { if ($_ % 2 == 0) { print "$_ is even. \n";} else { print "$_ is odd. \n";} } foreach语句中,用$_代表抓到的每一个当前变量。
19
2. Perl – Pattern Matching
A pattern is a sequence of characters to be searched for in a character string /pattern/ Match operators =~: tests whether a pattern is matched !~: tests whether patterns is not matched Match & Substitute Match: m/pattern/ or /pattern/ Substitute: s/pattern1/pattern2/
20
2. Perl – Pattern Matching
升级的 BLAST: PHI-BLAST PHI-BLAST (Pattern-Hit Initiated BLAST, 模式识别BLAST) : 能找到与查 询序列相似的并符合某种模式(pattern)的蛋白质序列。 符合模式: [LIVMF]-G-E-x-[GAS]-[LIVM]-x(3,7) Yes: VGEAAMPRI No: VGEAAYPRI 模式序列可能代表是一个酶的活性位点, 一个蛋白质家族的结构或者功能域的 氨基酸序列 。
21
2. Perl – Regular Expression
[] 字符集中的任意一个 Eg. /[ ]/ 表示0-9是个数字中的任意一个 \d 0-9是个数字中的任意一个 Eg. /\d/ = /[ ]/ = /[0-9]/ \D 不是0-9是个数字中的任意一个 Eg. /\D/ = /[^0-9]/ \w 任何字母、数字和下划线中的任何一个 Eg. /\w/ = /[_0-9a-zA-Z]/ \W 不是字母、数字和下划线中的任何一个 Eg. /\W/ = /[^_0-9a-zA-Z]/ \s “空格”,“\r”,“\n”,“\t”,“\f”中的任何一个 Eg. /\s/ = /[ \r\t\n\f]/ \S 不是“空格”,“\r”,“\n”,“\t”,“\f”中的任何一个 Eg. /\S/ = /[^ \r\t\n\f]/
22
^ 在字符集中 ^ 表示补集,在一般的模式中表示以什么开头
Eg. /[^123]/ 表示“不是1或2或3”;/^123/ 表示以“123”开头 $ 表示以什么结尾 Eg. /123$/ 表示以“123”结尾 . 匹配任何一个字符 Eg. /a.c/ 表示匹配1个a,接任何一个字符,再接1个c; * 匹配0或更多次, Eg. /ab*c/ 表示匹配1个a,接0或更多个b,再接1个c; + 匹配1或更多次 Eg. /ab+c/ 表示匹配1个a,接1或更多个b,再接1个c; ? 匹配1或0次 Eg. /ab?c/ 表示匹配1个a,接0或1个b,再接1个c; {count}匹配count次 Eg. /ab{3}c/ 表示匹配1个a,接3个b,再接1个c; {min,} 匹配至少min次 Eg. /ab{3,}c/ 表示匹配1个a,接至少3个b,再接1个c; {min,max} 匹配至少 min次,但不超过max次 Eg. /ab{3,5}c/ 表示匹配1个a,接3到5个b,再接1个c;
23
2. Perl – Regular Expression
模式修饰词: i 忽略大小写 Eg. $s =~ /abc/i, 匹配“abc”,无论大小写 g 匹配所有可能的模式 Eg. $s =~ s/a/A/g, 把$s中所有“a”都替换成“A”; Eg. $s =~ s/a/A/, 把$s中匹配的第一个“a”替换成“A”; x 忽略模式中的换行 Eg. $s =~ /ab 和 $s =~ /abc/ 是一样的 c/x /[a-z]+.\d{2,4}\s+[^XY]\s2013$/ $seq1 = "asd-345 A 2013" $seq2 = "sd-sss ws2013"
24
2. Perl – Regular Expression
模式的匹配: 可以用()捕获特定的模式 并依次存入 $1 $2 $3 中 $output="robert 27 m\n 2013"; if ($output =~ m/([a-z]+)\s+(\d{1,3})\s+[mf]\s+2013$/) { print "name: $1\nage: $2"; }
25
2. Perl – File I/O #续写文件 “>>” #读入文件
open(FH, ">>test2.pdb"); print FH $get[1]; close FH; #覆盖写文件 “>” open(FH, ">test2.pdb"); #读入文件 open(FH,"test.pdb"); @get=<FH>; close FH; print $get[0]; #写入文件 open(FH, ">test2.pdb"); print FH $get[0];
26
2. Perl – File I/O #屏幕输入 print "What's your name?\n";
$name = <STDIN>; chomp($name); print "Hello $name!"; #$name由屏幕输入赋值 #去掉$name末尾的\n, 如果有
27
2. Perl – Web Connection #!/usr/bin/perl use LWP::Simple;
$url=' $content = get $url; die "Couldn't get $url" unless defined $content; print $content; ###### open (FH, ">seq.fasta"); @ids=("Q6GV17","Q9BXR5","B3Y669","C0LSK8"); foreach { $url=" print FH "$content"; } close FH;
28
2. Perl –Example #!/usr/bin/perl use LWP::Simple;
print "Please enter the Uniprot ID:\n"; $id = <STDIN>; chomp $id; $url=" $content = get $url; die "Couldn't get $url" unless defined $content; @get1 = split(/\n/,$content); $sequence = print "Which amino acid?\n"; $aa = <STDIN>; chomp $aa; $count_aa=0; while ($sequence =~ m/$aa/ig) { $count_aa++;} $len = length($sequence); $aa_percent=$count_aa/$len; print "$aa in $id: $aa_percent";
29
3. HTML HTML语言(Hyper Text Markup Language,超文本标记语言):描述信息所有的规范标签,这些标签告诉浏览器怎样显示这个页面。 源文件 网页
30
3. HTML 标签的基本结构: <Tag> </Tag>
Eg: <h1>Hello World!</h1> <br></br> 等同于 <br/> 标签之间可以嵌套(一对标签里包含另一对标签): <Tag1> <Tag2> </Tag2> </Tag1> <Tag1> <Tag2> </Tag1> </Tag2> 这样是不对的 Eg: <h1><i>Hello World!</i></h1> 标签的属性: <Tag attribute1=“” attribute2=“”> </Tag> Eg: <font color=“blue” size=“3”>Hello World!</font> <h1 align=“center”>Hello Word</h1> 注释标签: <!--Comments--> Eg: <!--这里是注释,注释可以分 很多行业-->
31
3. HTML HTML文档的结构: <HTML> <HEAD> <!--头部信息-->
<title>My Site</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/> </HEAD> <BODY> <!--文档主体,正文部分--> </BODY> </HTML>
32
3. HTML 常用的标签: 标题标签:六个等级,H后数越小,标题字号就越大。
<H1></H1>, <H2></H2>, … , <H6></H6> 段落及换行标签: 换行标签:<BR/> 段落标签:<p></p>, <p align=“center”></p> align=“center” or ”left” (默认) or ”right” 水平线标签:<HR/> size:水平线宽度 width:水平线的长 align:水平线对齐方式 color: 水平线颜色
33
3. HTML 常用的标签: 文字格式标签:<FONT></FONT> size:文字大小,1-7,缺省是3
face:文字字体,Eg:Arial,Verdana, … color: 文字颜色 文字效果标签: <b></b> 加粗 <i></i> 斜体 <u></u> 下划线 <tt></tt> 打印机字体 <blink></blink> 闪烁
34
3. HTML 常用的标签: 项目符号标签: <ul> <dl>
<li>第一项</li> <dt>第一项</dt> <li>第二项</li> <dd>第一项是关于老鼠</dd> …… <dt>第二项</dt> <li>第n项</li> <dd>第二项是关于大象</dd> </ul> </dl> <ul></ul>以图形为项目符号,默认“圆点”。 <ol></ol>以数字为项目符号。 <dl></dl>可以给每一个列表项再加上一段说明性文字。
35
3. HTML 常用的标签: 表格标签: <table border=“1” width=“300” height=“300”>
<th>姓名</th> <th>性别</th> <tr> <td>张三</td><td>女</td> </tr> <td>李四</td><td>男</td> </table> <table>定义了一个表格。<th>定义了标题格。<tr>定义一行。<td>定义了一行中的一列。<td>可以用align设定左右对齐(left, center, right),用valign设定上下对齐(top, middle, bottom)。
36
表格标签: <table border="1" width="300" height="300">
<th>姓名</th> <th>性别</th> <tr> <td align=“center”><b>张三</b></td> <td>女</td> </tr> <td align="center" colspan="2">李四</td> </table> <td align=“center” rowspan=“2”><b>张三</b></td> <td>男</td>
37
3. HTML 常用的标签: 超链接标签: 链接到外部地址:<a href=" 链接到内部地址:<a href=“index02.html”>本网站的另一个网页</a> 链接到上一级目录的网页:<a href=“../index03.html”>上一个</a> 链接到当前网页的某一个位置: <a name="top"/> <a href="#top">返回页首</a> 可利用target=“_blank”属性另网页在新的窗口中打开: <a href=" target="_blank">山东大学</a> 若不加此项,则网页在当前窗口打开。
38
3. HTML 常用的标签: 表单标签: <html> <body>
<FORM action="../cgi-bin/test.cgi" method="post" encType="multipart/form-data"> <input name="name" size="40"/> <input type="submit" name="submit" value="submit"/> </FORM> </body> </html> 源文件 test.html 文件 网页
39
3. HTML 常用的标签: 表单标签: #!/usr/bin/perl use CGI qw(:standard);
$cgi = new CGI; $name = $cgi->param("name"); print $cgi->header( -type=> "text/html"); print "<p>Hallo $name!</p>"; 源文件 test.cgi 文件
40
3. HTML 常用的标签: 表单标签: name: <input name="name" size=“40"/>
<input type="radio" name="sex" value="male" /> Male <br/> <input type="radio" name="sex" value="female" /> Female <input type="checkbox" name="fruit" value="apple">apple<br/> <input type="checkbox" name="fruit" value="mango">mango<br/> <textarea name="comment" rows="3" cols="20"> xxx </textarea> <input type="submit" name="submit" value="submit"/>
Similar presentations