《Perl语言数据类型》由会员分享,可在线阅读,更多相关《Perl语言数据类型(30页珍藏版)》请在金锄头文库上搜索。
1、第二章Perl数据类型1. 生物数据生物数据2. 标量与标量变量标量与标量变量3. 列表与数组列表与数组4. 哈希(散列、关联数组)哈希(散列、关联数组)5. 课后作业课后作业2024/7/311电子科技大学生物信息学中心了解:了解:常量(标量、列表、数组、哈希)。常量(标量、列表、数组、哈希)。掌握:掌握:标量(数字、字符串、引用)标量(数字、字符串、引用);列表与数组列表与数组;哈希哈希。难点与重点:难点与重点:重点:重点:标量、数组、哈希及其生物信息学妙用标量、数组、哈希及其生物信息学妙用;引用;引用;Perl的特殊变量的特殊变量。目标与要求2024/7/312电子科技大学生物信息学中心
2、1.生物数据序列数据序列数据(sequence data)结构数据结构数据(structure data)网络数据网络数据(network data)gi|224589802:c2182439-2181009 Homo sapiens chromosome 11, GRCh37.p10 Primary AssemblyAGCCCTCCAGGACAGGCTGCATCAGAAGAGGCCATCAAGCAGGTCTGTTCCAAGGGCCTTTGCGTCAGGTGGGCTCAGGATTCCAGGGTGGCTGGACCCCAGGCCCCAGCTCTGCAGCAGGGAGGACGTGGCTGGGCTCG
3、TGAAGCATGTGGGGGTGAGCCCAGGGGCCCCAAGGCAGGGCACCTGGCCTTCAGCCTGCCTCAGCCCTGCCTGTCTCCCAGATCACTGTCCTTCTGCCATGGCCCTGTGGATGCGCCTCCTGCCCCTGCTGGCGCTGCTGGCCCTCTGGGGACCTGACCCAGCCGCAGCCTTTGTGAACCAACACCTGTGCGGCTCACACCTGGTGGAAGmetuximab Light chainMDSHTQVFIFLLLCVSGAHGSIVMTQTPTFLVVSAGDRVTITCKASQSVINDVAWYQQKPGQSPKLLIF
4、YASNRNTGVPDRFTGSGYGTDFTFTISTVQAEDLAVYFCQQDYSPPFTFGSGTKLEIKRKSTAPTVS2024/7/313电子科技大学生物信息学中心缩写含义缩写含义AAdenine(腺嘌呤)SCorG(strong)CCytosine(胞嘧啶)YCorT(pyrimidine)GGuanine(鸟嘌呤)KGorT(keto)TThymine(胸腺嘧啶)VAorCorGUUracil(尿嘧啶)HAorCorTMAorC(amino)DAorGorTRAorG(purine)BCorGorTWAorT(weak)NAorGorCorT(any)IUB/IUPAC核酸
5、标准缩写及对应中文2024/7/314电子科技大学生物信息学中心单字码三字码英文全称中文含义AAlaAlanine丙氨酸BAsxAsparticacidorAsparagine天冬氨酸或天冬酰胺CCysCysteine半胱氨酸DAspAsparticacid天冬氨酸EGluGlutamicacid谷氨酸FPhePhenylalanine苯丙氨酸GGlyGlycine甘氨酸HHisHistidine组氨酸IIleIsoleucine异亮氨酸KLysLysine赖氨酸LLeuLeucine亮氨酸MMetMethionine蛋氨酸(甲硫氨酸)NAsnAsparagine天冬酰胺PProProline
6、脯氨酸QGlnGlutamine谷氨酰胺RArgArginine精氨酸SSerSerine丝氨酸TThrThreonine苏氨酸VValValine缬氨酸WTrpTryptophan色氨酸XXxxUnknownorany未知或任何一种氨基酸YTyrTyrosine酪氨酸ZGlxGlutamicacidorGlutamine谷氨酸或谷氨酰胺氨基酸标准缩写及对应中文2024/7/315电子科技大学生物信息学中心ATOM 1 O5 DC D 1 69.842 -0.193 16.182 1.00 50.10 O ATOM 2 C5 DC D 1 69.499 1.011 15.489 1.00 47
7、.56 C ATOM 3 C4 DC D 1 70.397 2.177 15.830 1.00 45.77 C ATOM 4 O4 DC D 1 69.792 3.389 15.331 1.00 44.44 O ATOM 5 C3 DC D 1 70.599 2.411 17.324 1.00 44.27 C ATOM 6 O3 DC D 1 71.867 3.032 17.535 1.00 42.80 O ATOM 7 C2 DC D 1 69.482 3.373 17.680 1.00 44.90 C ATOM 8 C1 DC D 1 69.270 4.171 16.400 1.00 43
8、.11 C ATOM 9 N1 DC D 1 67.849 4.397 16.109 1.00 42.06 N ATOM 10 C2 DC D 1 67.357 5.691 16.106 1.00 41.72 C 结构数据2024/7/316电子科技大学生物信息学中心网络数据:人体代谢网络2024/7/317电子科技大学生物信息学中心网络数据可视化示例2024/7/318电子科技大学生物信息学中心2.标量与标量变量标量(Scalar)是是PerlPerl语言中最基本的一种数据类型语言中最基本的一种数据类型;各种数字各种数字;各种字符串各种字符串。标量变量(ScalarVariable)是不可再
9、分解的变量是不可再分解的变量; ;可动态存储可动态存储单个的标量的标量; ;指示符指示符“$ $”后接变量名后接变量名; ;变量名称由字母、数字及下划线组成变量名称由字母、数字及下划线组成; ;不要单独使用数字或特殊字符及其组合作为变量名不要单独使用数字或特殊字符及其组合作为变量名; ;变量名变量名区分大小写!2024/7/319电子科技大学生物信息学中心#NumbersfromdifferentnumeralsystemscanbeusedliterallyinPerlmy$bin=0b11111010;#250inbinaryform,一个很“二”的250!my$oct=0372;#250
10、inoctalform,还是一个250!my$dec=-250;#negative250indecimalform,一个负的250!my$hex=0xfa;#250inhexadecimalform,也是一个250!my$Hex=0XfA;#Also250inhexadecimalform,仍然是250!#LiketheMagicof1001Nights!my$sum=$bin+$oct+$hex+$Hex+1;print$sum=$sum#Addingfour$hexsand1,youget$sum!nn;#Automaticconversionnumberstostrings.print$
11、sum.$dec.nn;数字相关代码示例12024/7/3110电子科技大学生物信息学中心数字相关代码示例2#Becarefulwhenbignumbersandsmallnumbersareusedtogetherprint(9e22+2013-9e22,n);#0print(9e22-9e22+2013,n);#2013print(9e11+5.12-9e11,n);#5.1199951171875print(9e11-9e11+5.12,n);#5.12print(9e12+5.12-9e12,n);#5.119140625print(9e13+5.12-9e13,n);#5.125pr
12、int(9e14+5.12-9e14,n);#5.125print(9e15+5.12-9e15,n);#5print(9e16+5.12-9e16,n);#0print(9e16-9e16+5.12,n);#5.122024/7/3111电子科技大学生物信息学中心常用转义字符序列及其功能描述转义序列功能描述aBell(beep,系统响铃)bBackspace(退格)c等同于Ctrl和相应字符键的组合,如G可写成cG,等同于ae等同于ESCEEndstheeffectofL,UorQ(结束L、U、Q的作用)fFormfeed(换页符)lForcesthenextletterintolowerc
13、ase(下一字符强制小写)LAllfollowinglettersarelowercase(随后字符强制小写,到E为止)nNewline(换行)rCarriagereturn(回车)Q给Q后非文非数的字符(如空格、制表符、#等)加上,到E为止tTab(水平制表符)uForcenextletterintouppercase(下一字符强制大写)UAllfollowinglettersareuppercase(随后字符强制大写)vVerticaltab(垂直制表符)007后接八进制数字表示ASCII字符,如007等同于ax07后接十六进制数字表示ASCII字符,如x07等同于a2024/7/3112
14、电子科技大学生物信息学中心嵌入文档示例#Examplesofhere-docmy$poem=POEM;Thecomingofwisdomwithtime-byWilliamButlerYeatsThoughleavesaremany,therootisone;Throughallthelyingdaysofmyyouth,Iswayedmyleavesandflowersinthesun;NowImaywitherintothetruth!POEM2024/7/3113电子科技大学生物信息学中心引用(reference)引用是指向标量、数组、哈希、函数、对引用是指向标量、数组、哈希、函数、对象
15、的一类特殊的标量,类似于象的一类特殊的标量,类似于C语言的指针语言的指针$foo$barvalue2024/7/3114电子科技大学生物信息学中心3.列表与数组列表(列表(List)是包含在括号里的一系列有序标量或标量变量。是包含在括号里的一系列有序标量或标量变量。数组(数组(array)是存储列表的变量,用是存储列表的变量,用标识。标识。操作列表与数组操作列表与数组创建列表与数组;创建列表与数组;列表与数组的赋值;列表与数组的赋值;访问列表与数组的元素;访问列表与数组的元素;常用函数与控制结构。常用函数与控制结构。2024/7/3115电子科技大学生物信息学中心创建列表与数组创建列表创建列表
16、把标量、标量变量、表达式、函数放到圆括号中,用逗号隔开即可;把标量、标量变量、表达式、函数放到圆括号中,用逗号隔开即可;(2, 0, 1, 3, 1, 4)、)、(1.100)、(A.Z)。建立单词列表要有引号建立单词列表要有引号(Bioinformatics, Programming, Using, Perl);对于很大的单词列表,对于很大的单词列表,Perl提供了提供了qw引用形式;引用形式;quoted word;quoted by whitespace;qw形式的列表中单词不仅可用空格分开,换行也可;形式的列表中单词不仅可用空格分开,换行也可;qw形式的列表,不一定非得使用圆括号,任何
17、标点符号均可作为定界符;形式的列表,不一定非得使用圆括号,任何标点符号均可作为定界符;左右成对的除了圆括号外还有左右成对的除了圆括号外还有、方括号、花括号等。、方括号、花括号等。!、#等定界符一样自身配对使用。等定界符一样自身配对使用。创建数组创建数组在在符号后加上数组符号后加上数组;新建数组没有显式赋值时,就默认含了一个空列表新建数组没有显式赋值时,就默认含了一个空列表()。2024/7/3116电子科技大学生物信息学中心列表与数组代码示例1#create,assignandprintlistsandarraysmydna=($a,$t,$g,$c)=qw(ATGC);print(dna,n
18、);#makingbasepairingbyswap($a,$t,$g,$c)=($t,$a,$c,$g);print($a,$t,$g,$c,n);#assignthelistindnatobasesmybases=dna;my$type=bases;#whenevaluateanarrayinscalarcontext,itreturnsprintThereare$typetypesofbasesinDNA.n;#thelengthofthearray#pleaseavoidcodinglikethenextlineinfuturemy$u=qw(AGCU);#whenevaluateal
19、istinscalarcontext,itreturnsprint$uracilratherthanthymineisusedinRNA.nn;#thelastvalue2024/7/3117电子科技大学生物信息学中心列表与数组代码示例2#accessinganelementorelementsofanarrayorlistprint(qw(AGCU)1,2,n);#Alistvaluemayalsobesubscripted#payattentionbases15iswronginscalarcontext$bases15=N;printbasesn;#$bases4,$bases5,and
20、soonareundef#swapelementsofanarrayviasubscriptdna0,1,2,3=dna1,0,3,2;printdnan;#assignasubarraytodnausingsubscriptdna=bases0.3;printdnaIllbeback!(_)n;#asMr.Wolfalwayssays#both$#dnaand-1getthelastelementsindexofdnaprintThelastbaseindnais$dna$#dnaytosine($dna-1).nn;2024/7/3118电子科技大学生物信息学中心列表与数组代码示例3#do
21、notusethesamenameforanarrayandascalarmystudent=qw(HeNieRuWang);my$student=He;#IwannasayItisfoundbyHe1.printItisfoundby$student1.n;#Nieo(_valuepairsforbasesn;foreachmy$index(0.$#bases)print$index=$bases$indexnif$bases$index;2024/7/3120电子科技大学生物信息学中心操作列表与数组的常用函数与控制结构2024/7/3121电子科技大学生物信息学中心另外几个常用的列表与数组
22、相关函数函数名使用方式基本解释chompchompLISTchompVARIABLE用于去掉数组每个元素或标量变量末尾的换行符,返回值是删除换行符的个数,仅针对变量!chopchopLISTchopVARIABLE用于去掉数组每个元素或标量变量末尾字符,返回值所删除的字符,仅能用于处理变量!reversereverseLIST列表语境,返回逆序列表;标量语境,返回逆序字符串。不会改变传入参数,需接收返回值!scalarscalarEXPR伪函数,在列表语境中强制标量语境解读sortsortLIST根据代码点排序并返回排序后列表,当心数字!splitsplit/PATTERN/,EXPR,LIM
23、IT扫描表达式EXPR生成的字符串,并按/PATTERN/所定义的特征将其分解成子串到列表LIMIT+1个变量里。列表语境,返回子串列表;标量语境,返回子串数目。如特征无匹配,返回原字符串。2024/7/3122电子科技大学生物信息学中心列表与数组代码示例5#builtinfunctionsfrequentlyusedforlistsandarrayssplicebases,4,11,qw(UMRWSYKVHDB);printnbases=qw(bases),n;#first,reverse;thenassign!bases=reversebases;printreversedqw(bases
24、),n;#first,sort;thenassign!bases=sortbases;printsorted=qw(bases),n;splicebases;#bases=();printNowbaseshas,scalarbases,element.n;2024/7/3123电子科技大学生物信息学中心列表与数组代码示例6my$peptide=SVSVGMKPSPRP;printreverse(n,scalarreverse$peptide);myaminos=split/,$peptide;#thenullpattern/printaminos,n;#simplysplitsintosepa
25、ratecharactersforeachmy$index(0.$#aminos)#addpositionnumber$aminos$index=$aminos$index.($index+1).n;printaminos;chompaminos;#foreach(aminos)chomp;printaminosn;#showthetrailingnewlinecutoffchopaminos;#foreach(aminos)chop;printaminosn;#showthelastcharacterchoppedoffforeach(1.3)popaminos;#using$_bydefa
26、ultpushaminos,qw(PRP);printaminos,nIllbeback!(_)n;2024/7/3124电子科技大学生物信息学中心4.哈希(hash)如果我们将如果我们将Perl中的常量与变量看作是中的常量与变量看作是“名词名词”的话,标量的话,标量就是名词的单数形式;列表与数组及哈希(就是名词的单数形式;列表与数组及哈希(hash)就是名)就是名词的复数形式。列表与数组是有序的复数名词,其顺序由词的复数形式。列表与数组是有序的复数名词,其顺序由从从0开始的依次递增的整数索引确定;哈希是无序的复数开始的依次递增的整数索引确定;哈希是无序的复数名词,由一系列关联的键(名词,由一
27、系列关联的键(key)值()值(value)对组成。哈)对组成。哈希与数组的不同之处就在于索引方式(希与数组的不同之处就在于索引方式(index style)。数)。数组是以从组是以从0开始的有序整数来索引的,哈希则是用键(任开始的有序整数来索引的,哈希则是用键(任意唯一的字符串)来索引。意唯一的字符串)来索引。哈希除了直接音译得名之外,还有两个常用译名。一是关哈希除了直接音译得名之外,还有两个常用译名。一是关联数组(联数组(Associative Array),反映了键与值的对映关系;),反映了键与值的对映关系;二是散列,有无序列表之意,反映了哈希的无序性。二是散列,有无序列表之意,反映了哈
28、希的无序性。2024/7/3125电子科技大学生物信息学中心哈希代码示例1my%bases=(0,A,1,T,2,G,3,C,15,N,);print%bases,n;mybases=%bases;#unwindingprintbasesn;#builtinfunctionsfrequentlyusedforhashes#hashforaminoacidcodeconvertingmy%AA123=(A = Ala, V = Val, L = Leu, I = Ile,P = Pro, W = Trp, F = Phe, M = Met,G = Gly, S = Ser, T = Thr, Y
29、 = Tyr,C = Cys, N = Asn, Q = Gln, K = Lys,R = Arg, H = His, D = Asp, E = Glu,);$AA123B=Asx;$AA123X=Xxx;$AA123Z=Glx;2024/7/3126电子科技大学生物信息学中心哈希代码示例2printkeys%AA123,n;mytricodes=values%AA123;printtricodesn;foreachmy$key(sortkeys%AA123)print$key=$AA123$keyn;my%AA321=reverse%AA123;#swapkeyandvaluedelete$
30、AA321Xxx;#deletethekeyandthevalue$AA321Asx=;#nowthevalueeq(emptystring)undef$AA321Glx;#nowthevalueisundefif(exists$AA321Glx)printnThekeyGlxexistsandcorrespondsundefvalue.nn;while(my($key,$value)=each%AA321)print$key=$valuen;2024/7/3127电子科技大学生物信息学中心5.常量变量(变量(variables)在在$、%等标识符后紧跟名称;等标识符后紧跟名称;包括单数的标量
31、变量,复数的数组及哈希;包括单数的标量变量,复数的数组及哈希;直接量(直接量(literals)、常量(常量(constants)如打印语句中直接给出的没有名称的字符串或列表;如打印语句中直接给出的没有名称的字符串或列表;use constant PI = 4 * atan2(1, 1);use Readonly;$pi = 4 * atan2(1, 1);weekdays = qw (Sunday Monday Tuesday Wednesday Thursday Friday Saturday);2024/7/3128电子科技大学生物信息学中心5.课后作业在在Chapter02文件夹中,有
32、一个文件夹中,有一个all_mimodb_peptides文件,里面是文件,里面是MimoDB数据库数据库3.1版本中收录的来自噬菌体展示实验结果的版本中收录的来自噬菌体展示实验结果的17427条条多肽。请你运用已学的知识,从多肽。请你运用已学的知识,从all_mimodb_peptides.gz文件中找出文件中找出所有出现且仅出现过一次的多肽,所有出现过多次(即两次或两次所有出现且仅出现过一次的多肽,所有出现过多次(即两次或两次以上)的多肽,并据此建立一个非冗余的数据集。以上)的多肽,并据此建立一个非冗余的数据集。请用请用Perl写一个小脚本,运行后在屏幕上输出人类胰岛素基因序列写一个小脚本
33、,运行后在屏幕上输出人类胰岛素基因序列FASTA格式的互补序列(按格式的互补序列(按5到到3方向)。方向)。美妥昔单抗(美妥昔单抗(metuximab)是我国自主研发上市的第一个单克隆抗体)是我国自主研发上市的第一个单克隆抗体药物。其重链与轻链的氨基酸序列已公布于美国专利(药物。其重链与轻链的氨基酸序列已公布于美国专利(US7638619)。)。我们已将其公布的氨基酸序列提取如下。请用我们已将其公布的氨基酸序列提取如下。请用Perl写一个小脚本,运写一个小脚本,运行后在屏幕上输出更为常见的美妥昔单抗重链和轻链的单字母缩写行后在屏幕上输出更为常见的美妥昔单抗重链和轻链的单字母缩写的氨基酸序列。的氨基酸序列。2024/7/3129电子科技大学生物信息学中心谢谢倾听,欢迎解码!德光上贤COBI中心介绍HLAB2024/7/3130电子科技大学生物信息学中心