perl语言期末考核大作业.docx
- 文档编号:6153852
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:30
- 大小:2.21MB
perl语言期末考核大作业.docx
《perl语言期末考核大作业.docx》由会员分享,可在线阅读,更多相关《perl语言期末考核大作业.docx(30页珍藏版)》请在冰豆网上搜索。
perl语言期末考核大作业
成绩表
考核作业成绩(70%)
回答问题成绩(30%)
总成绩
&
%
Perl程序设计课程考核
院系部门:
学生专业:
%
学生学号:
学生姓名:
2012年1月
课程大作业内容
)
第一题:
请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。
1、安装过程:
Bioperl的安装
(1):
安装好activeperl。
(2)、打开ppm,得到如下界面:
3:
,选择Edit>>Preferences。
得到如下界面:
)
4:
在Preferences添加下面的站点
Repositoriestoadd
Name
perl
perl
BioPerl-RegularReleases
DIST
*
DIST
BioPerl-ReleaseCandidates
DIST/RC
DIST/RC
Kobes
%
:
选择View>>AllPackages;
6:
在搜索框输入bioperl得到如下界面:
}
7:
,选择最新版本,右键安装
(需要安装:
bioperl;bioperl-db;bioperl-network;bioperl-run)。
8:
查看安装是否成功:
查看目录Perl\lib\Bio中是否存在文件,存在则表明安装成功
二:
测试
测试代码:
[
建立一个PL文件:
写入以下内容,然后双击文件,会在同目录下生成一个文件
useBio:
:
Seq;
useBio:
:
SeqIO;
#createasequenceobjectofsomeDNA
my$seq=Bio:
:
Seq->new(-id=>'testseq',-seq=>'CATGTAGATAG');
#printoutsomedetailsaboutit
]
print"seqis",$seq->length,"baseslong\n";
print"revcomseqis",$seq->revcom->seq,"\n";
#writeittoafileinFastaformat
my$out=Bio:
:
SeqIO->new(-file=>'>',-format=>'Fasta');
$out->write_seq($seq);
—
双击,得到
或者在命令处理程序中:
输入:
C:
\Perl>perldocBio:
:
Biblio
得到如下:
¥
3、简述该过程中出现问题解决经历
第二题:
结合图形和程序回答下面问题
1、编程实现一个DNA序列文件的酶切位点的分析(包括酶切位点统计、酶切位点的标记和计数,以及可视化输出等,不准用模式匹配知识)(10分)。
@
2、对1中编写的程序采用子程序进行优化,并阐述子程序输入输出和内部算法实现的理由和心得(10分)。
3、进一步完善上面的程序,编写的系列酶切酶管理程序,实现酶切酶信息的添加、删除和修改,并简述理由和心得(20分)。
由于第一问、第二问和第三问是紧密联系的,所以将其联合在一起编辑优化得到以下程序:
具体程序代码如下:
system'cls';
*
&choose;
my$slect=
chomp($slect);
if($slecteq"search")
{
&search;
]
}
if($slecteq"add")
{
&add;
}
if($slecteq"estimate")
{
&estimate;
(
}
if($slecteq"quit")
{
&quit;
}
subchoose
{
$~="heading";
】
write;
formatheading=
运行程序选择
===================================================================================
===================================================================================
=======在酶切位点中添加新的酶切位点——请输人add========
*******计算整个序列中各碱基所占比例——请输入estimate********
*******寻找基因的酶切位点——请输入search********
~
=======退去此程序——请输入quit========
===================================================================================
===================================================================================
.
print"\n\n请在这里输入你的选项:
";
}
【
subsearch
{
system'cls';
print"\n\n====================================你已进入酶切位点查找程序================================\n";
print"============================================================================================\n\n";
print"请在这里输入目的基因序列:
\n\n";
my$string=
—
print"\n请输入酶切位点序列:
\n";
my$dian=
chop($dian);
#将找到的酶切位点的位置赋值到句柄$positions中
print"\n基因序列的酶切位点:
\n";
my$foundAt=0;
'
my$offset=0;
my$label=1;
my%positions;
while(($foundAt=index($string,$dian,$offset))>-1)
{
$positions{$foundAt}=$label++;
$offset=$foundAt+1;
:
}
###将$string中的基因序列按每10个一组输出
my$n=0;
my$number=0;
my$c=0;
while($c { my$n=0; - while($n<100) { my$str; $str=substr($string,$n+$c,10); print$str; print""; $n+=10; } $ print"\n"; foreach(0..99) { if(($_+1)%10==0) { print""; print$positions{$_+$c}$positions{$_+$c}: ""; } ` else { print$positions{$_+$c}$positions{$_+$c}: ""; } } print"\n"; $c+=100; if((length($string)-$c)>0&&(length($string))-$c<100) 】 { last; } } my$f=$c; foreach($c..length($string)-1)#110 { my$str2; ; $str2=substr($string,$c,1); print$str2; $c++; if($c%10==0){print"";} } print"\n"; foreach($f..length($string)-1) ) { print$positions{$f}$positions{$f}: ""; print""if($f%10==0); $f++; } print"\n"; } subadd . { system'cls'; print"\n\n==================================你已进入添加酶切位点程序================================\n"; print"==========================================================================================\n\n"; print"请依次输入酶的名称其识别的序列酶切的前半部分序列酶切的后半部分序列,输完后请按Ctrl+Z\n"; chomp(my@enzyme= open(FILE,">>C: \\myperl\\酶切位点.txt"); print(FILE"@enzyme\n"); 、 close(FILE); print"\n此序列以保存到C: \\myperl\\酶切位点.txt\n\n"; print"下面输出的是数据库中所保存的所有的酶切位点: \n\n"; open(FILE,"C: \\myperl\\酶切位点.txt"); my@array= close(FILE); print@array; print"==========================================================================================\n"; ! print"=========================================================================================="; } subestimate { system'cls'; print"====================你已进入基因序列各碱基比例统计程序=========================\n"; print"===============================================================================\n\n"; [ print"请在这里输入基因序列所在的文件位置(如C: \\myperl\\)\n序列存放位置: "; $file= chomp($file); open(FILEHANDLE,"$file"); $string= close(FILEHANDLE); #将@array中的每一个元数中的内容都赋值到$string中,形成一个字符串 print"\n从文件中读出的基因序列为: \n$string"; { print"\n\n\n=========================此基因序列碱基分析结果如下===========================\n\n\n"; ($a,$c,$t,$g,$n1)=(0,0,0,0,0); print"基因序列: $string\n"; #用while循环进行统计 while($n1<(length($string)-1)) { ; $y=substr($string,$n1,1); if("$y"eq"A") { $a++; } elsif("$y"eq"C") { $c++; 、 } elsif("$y"eq"T") { $t++; } elsif("$y"eq"G") { $g++; ~ } $n1++; } $n=length($string); #分别计算出a,t,c,g在所给基因中所占的百分比 $ap=$a/$n; $cp=$c/$n; $tp=$t/$n; ^ $gp=$g/$n; print"\nA碱基所占的百分比为$ap\nC碱基所占的百分比为$cp\nT碱基所占的百分比为$tp\nG碱基所占的百分比为$gp\n"; } subquit { print"\n你已退出了该程序! ! ! "; } — 第一步运行改程序会出现如下选择界面: 第二步输入add进入在酶切位点文件中添加新酶切位点的程序,界面如下: 依次输入酶的名称,识别序列,酶切割的前半部分序列,酶切割的后半部分序列,回车后,Ctrl+Z进行酶切位点添加,输出文件中已有的酶切位点。 界面如下: 第三步在程序选择窗口中输入estimate,进入基因序列碱基分析程序,界面如下: 【 输入自己电脑上存放基因序列文件的位置,回车。 得到基因序列原文和对其进行碱基分析的结果。 界面如下: 第四步在程序选择窗口中输入search,进入在基因序列上寻找酶切位点的程序,界面如下: 输入目的基因序列和要寻找酶切序列,回车,运行程序得到酶切位点标记和记数结果。 界面如下: 第五步在程序选择窗口中输入quit,跳出本程序。 界面如下: ; 4、编程实现采用滑动窗口技术实现DNA序列的四种碱基含量变化并可视化输出,并简述理由和心得(10分)。 理由和心得: 可以利用滑动窗口这个结构,很快的找到从第几位开始,接下来的窗口大小内的数据是什么,在研究DNA碱基序列中可以很方便,只需从窗口中取出碱基序列就可以做相应的事情,如果不行,可以将窗口向前移动继续查找。 具体程序代如下: usewarnings; , usestrict; open(FILEHANDLE,"C: \"); my@array= close(FILEHANDLE); my$lengt=@array; my$a; my$string; for($a=0;$a<$lengt;$a++) 、 { chomp($array[$a]); $string.=$array[$a]; } #print$string; my$nu=0; my$nu1=0; my$d={}; 《 while((length($string)-$nu)>9) { my$subseq=substr($string,$nu1,10); my@arrayseq=split ;} package1: : mypackage1; my$file= chomp($file); my$geneseq=&fileopen($file); 【 print"\n文件中基因序列为: \n$geneseq\n"; for(my$j=0;$j<3;) { my@ac; my$i=0; my$ai=0; $ai=$ai+$j; while (1) ? { $ac[$i++]=substr($geneseq,$ai,3); $ai=$ai+3; lastif(length($geneseq)-$ai<3); } my$f=0; foreach(@ac) { ` for(my$u=0;$u<3;$u++) { if("A"eqsubstr($_,$u,1)) { substr($ac[$f],$u,1)="T"; } elsif("T"eqsubstr($_,$u,1)) { % substr($ac[$f],$u,1)="A"; } elsif("G"eqsubstr($_,$u,1)) { substr($ac[$f],$u,1)="C"; } elsif("C"eqsubstr($_,$u,1)) { ! substr($ac[$f],$u,1)="G"; } } $f++; } $j++; print"\n此基因序列的第$j种密码子可能为: \n@ac\n"; my$code; # foreach(@ac) { if($_=~/TC|AG[TC]/) { $code.='S'; } elsif($_=~/CT|TT[AG]/) { } $code.='L'; } elsif($_=~/CG|AG[AG]/) { $code.='R'; } elsif($_=~/GG/) { 、 $code.='G'; } elsif($_=~/CC/) { $code.='P'; } elsif($_=~/AC/) { % $code.='T'; } elsif($_=~/GC/) { $code.='L'; } elsif($_=~/GT/) { 】 $code.='V'; } elsif($_=~/AT[TCA]/) { $code.='I'; } elsif($_=~/TT[TC]/) { ) $code.='F'; } elsif($_=~/TG[TC]/) { $code.='C' } elsif($_=~/CA[TC]/) { * $code.='H'; } elsif($_=~/TA[TC]/) { $code.='Y'; } elsif($_=~/CA[AG]/) { ' $code.='Q'; } elsif($_=~/AA[TC]/) { $code.='N'; } elsif($_=~/AA[AG]/) { & $code.='K'; } elsif($_=~/GA[TC]/) { $code.='D'; } elsif($_=~/GA[AG]/) { $code.='E'; } elsif($_eq"ATG") { $code.='M'; } elsif($_eq"TGG") { $code.='W'; } } print"这种密码子得到的蛋白质序列如下: \n$code\n\n\n"; } subfileopen { my$geneseq; open(FILEHANDLE,"$_[0]"); my@array= close(FILEHANDLE); my$lengt=@array; my$a; for($a=0;$a<$lengt;$a++) { chomp($array[$a]); $geneseq.=$array[$a]; } return$geneseq; } ####package1的内容如下,此包可以创建存放在C: 》perl》site》lib》里面,所以一下程序可以在创建包的情况下删除 packagepackage1; submypackage1 { system'cls'; print"\n+++++++++++++++++++++++++++++++++你已进入DNA序列向蛋白质氨基酸序列转化程序+++++++++++++++++++++++++++++++++\n"; print"============================================================================================================\n\n"; print"请在这里输入基因序所在的文件(例如C: \)\n"; print"位置: "; } 1; 运行以上程序会进入到基因位置输入窗口,界面如下: 输入基因序列所存放的文件的位置,即可运行程序得到基因序列向蛋白质序列的转化结果。 界面如下: 第四题: 采用模块知识优化整理第三题程序,并根据自己经验结合图形和程序概述模块应用的好处和不足之处(20)。 运用模块的好处: 运用模块后,其PM文件中的子程序可以被多次重复调用,也可以被不同的程序调用,提高了程序的重复使用率同时也精简了主程序,使程序的可读性提高了。 运用模块后,使程序的修改和维护变得简便,容易。 模块的调用简单,好用。 模块的不足: 在建立模块时,要建立好几个PM文件,PM文件多了之后不容易管理,容易把PM文件搞混或搞掉。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- perl 语言 期末 考核 作业