最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

perl语言期末考核大作业

来源:动视网 责编:小OO 时间:2025-09-29 23:27:01
文档

perl语言期末考核大作业

成绩表考核作业成绩(70%)回答问题成绩(30%)总成绩Perl程序设计课程考核院系部门:学生专业:学生学号:学生姓名:2012年1月课程大作业内容第一题:请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。一、安装过程:Bioperl的安装(1):安装好activeperl10.1。(2)、打开ppm,得到如下界面:3:,选择Edit>>Preferences。得到如下界面:4:在Preferences添加下面的站点
推荐度:
导读成绩表考核作业成绩(70%)回答问题成绩(30%)总成绩Perl程序设计课程考核院系部门:学生专业:学生学号:学生姓名:2012年1月课程大作业内容第一题:请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。一、安装过程:Bioperl的安装(1):安装好activeperl10.1。(2)、打开ppm,得到如下界面:3:,选择Edit>>Preferences。得到如下界面:4:在Preferences添加下面的站点

成绩表考核作业成绩(70%)

回答问题成绩(30%)

总成绩
Perl程序设计课程考核

院 系 部 门:                    

学 生 专 业:                    

学 生 学 号:            

学 生 姓 名:            

                                     2012年1月

课程大作业内容

第一题:请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。 

一、安装过程:

Bioperl的安装

(1):安装好active perl 10.1。

(2)、打开ppm,得到如下界面:

3:,选择Edit >> Preferences。得到如下界面:

4:在Preferences添加下面的站点

Repositories to add
Nameperl 5.8perl 5.10
BioPerl-Regular Releaseshttp://bioperl.org/DISThttp://bioperl.org/DIST
BioPerl-Release Candidateshttp://bioperl.org/DIST/RChttp://bioperl.org/DIST/RC
Kobeshttp://theoryx5.uwinnipeg.ca/ppms

http://cpan.uwinnipeg.ca/PPMPackages/10xx/
Bribeshttp://www.Bribes.org/perl/ppmhttp://www.Bribes.org/perl/ppm
tcoolhttp://ppm.tcool.org/archives/

NA
5:选择View >> All Packages;

6:在搜索框输入bioperl得到如下界面:

7:,选择最新版本,右键安装

(需要安装:bioperl;bioperl-db;bioperl-network;bioperl-run)。

8:查看安装是否成功:

查看目录Perl\\lib\\Bio中是否存在Biblio.pm文件,存在则表明安装成功

二:测试

  测试代码:

建立一个PL文件:写入以下内容,然后双击文件,会在同目录下生成一个testseq.fsa文件

use Bio::Seq;

use Bio::SeqIO;

    

# create a sequence object of some DNA

my $seq = Bio::Seq->new(-id => 'testseq', -seq => 'CATGTAGATAG');

# print out some details about it

print "seq is ", $seq->length, " bases long\\n";

print "revcom seq is ", $seq->revcom->seq, "\\n";

 

# write it to a file in Fasta format 

my $out = Bio::SeqIO->new(-file => '>testseq.fsa', -format => 'Fasta');

$out->write_seq($seq);

双击bioperltest.pl,得到

或者在命令处理程序中:

输入:

C:\\Perl>perldoc Bio::Biblio

得到如下:

三、简述该过程中出现问题解决经历

    

第二题:结合图形和程序回答下面问题

1、编程实现一个DNA序列文件的酶切位点的分析(包括酶切位点统计、酶切位点的标记和计数,以及可视化输出等,不准用模式匹配知识)(10分)。

2、对1中编写的程序采用子程序进行优化,并阐述子程序输入输出和内部算法实现的理由和心得(10分)。

3、进一步完善上面的程序,编写的系列酶切酶管理程序,实现酶切酶信息的添加、删除和修改,并简述理由和心得(20分)。

 

 由于第一问、第二问和第三问是紧密联系的,所以将其联合在一起编辑优化得到以下程序:

具体程序代码如下:

    system 'cls';

    &choose;

    my $slect=;

    chomp($slect);

    

        if ($slect eq "search")

    {

      &search;

              

    }

    if($slect eq "add")

        {

          &add;

        }

       if($slect eq "estimate")

        {

          &estimate;

        }

       if($slect eq "quit")

       {

        &quit;

        }

 sub choose

    {        

$~="heading";

write;

format heading = 

    运行程序选择

===================================================================================

===================================================================================

=======           在酶切位点中添加新的酶切位点——请输人add                ========

*******           计算整个序列中各碱基所占比例——请输入estimate           ********

*******           寻找基因的酶切位点——请输入search                       ********

=======           退去此程序——请输入quit                                 ========

===================================================================================

===================================================================================

.

print"\\n\\n  请在这里输入你的选项:";

}

    

sub search

     {

       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 ";    

                }

 sub add

    { 

         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"==========================================================================================";

                  }

   sub estimate

            {

        system 'cls';

                print"====================你已进入基因序列各碱基比例统计程序=========================\\n";

                print"===============================================================================\\n\\n";

        print "请在这里输入基因序列所在的文件位置(如C:\\\\myperl\\\\gene.pl.txt)\\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 "\\n A碱基所占的百分比为 $ap\\n C碱基所占的百分比为 $cp\\n T碱基所占的百分比为 $tp\\n G碱基所占的百分比为 $gp\\n";

                }

 sub quit

    {

     print"\\n  你已退出了该程序";

    }

第一步 运行改程序会出现如下选择界面:

第二步 输入add 进入在酶切位点文件中添加新酶切位点的程序,界面如下:

依次输入酶的名称,识别序列,酶切割的前半部分序列,酶切割的后半部分序列,回车后,Ctrl+Z进行酶切位点添加,输出文件中已有的酶切位点。界面如下:

第三步 在程序选择窗口中输入estimate,进入基因序列碱基分析程序,界面如下:

输入自己电脑上存放基因序列文件的位置,回车。得到基因序列原文和对其进行碱基分析的结果。界面如下:

第四步 在程序选择窗口中输入search,进入在基因序列上寻找酶切位点的程序,界面如下:

输入目的基因序列和要寻找酶切序列,回车,运行程序得到酶切位点标记和记数结果。界面如下:

第五步 在程序选择窗口中输入quit,跳出本程序。界面如下:

4、编程实现采用滑动窗口技术实现DNA序列的四种碱基含量变化并可视化输出,并简述理由和心得(10分)。

理由和心得:

    可以利用滑动窗口这个结构,很快的找到从第几位开始,接下来的窗口大小内的数据是什么,在研究DNA碱基序列中可以很方便,只需从窗口中取出碱基序列就可以做相应的事情,如果不行,可以将窗口向前移动继续查找。

具体程序代如下:

use warnings;

use strict;

open(FILEHANDLE,"C:\\gene.txt");

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//,"$subseq";

    foreach(@arrayseq)

    {

        $d->{$_}->[$nu]++;

    }

    $nu++;

    $nu1++;

}

#system  'cls';

my $m=();

&stats("A");

print "\\n\\n\\n\\n      ^^^^^^^^^^^^^^^^^A基因的统计结果如下图^^^^^^^^^^^^^^^^^^\\n";

&pri;

&stats("G");

print "\\n\\n \\n\\n     ^^^^^^^^^^^^^^^^^G基因的统计结果如下图^^^^^^^^^^^^^^^^^^\\n";

&pri;

&stats("C");

print "\\n\\n\\n\\n      ^^^^^^^^^^^^^^^^^C基因的统计结果如下图^^^^^^^^^^^^^^^^^^\\n";

&pri;

&stats("T");

print "\\n\\n \\n\\n     ^^^^^^^^^^^^^^^^^T基因的统计结果如下图^^^^^^^^^^^^^^^^^^\\n";

&pri;

sub stats

{

    my $sn;

    my $sn1;

    for ( $sn=0;$sn<=($nu-1);$sn++)

    {

        for( $sn1=0;$sn1<=10;$sn1++)

        {

            while(!defined($d->{$_[0]}->[$sn]))

            {

                $d->{$_[0]}->[$sn]=0;

            }

            if($sn1 == $d->{$_[0]}->[$sn])

            {    

                $m->[$sn1]->[$sn]="*";

            }

            else

            {

                $m->[$sn1]->[$sn]=qq{ };

            }

        }  }  }

sub pri

{

    print "\\n\\n ^\\n |\\n";

    for(my $sn4=10;$sn4>=0;$sn4--)

    {    

        print " $sn4| ";

        for(my $sn=0;$sn< $nu;$sn++)

        {    

            print $m->[$sn4]->[$sn];

        }

        print "\\n";

    }

     print  "-"x ($nu+5),">";

}

运行此程序得到存放在C盘gene.text文本文档中的基因序列各个基因的统计图形结果,如下图所示:

A基因统计结果:

G基因的统计结果:

G基因的统计结果:

T基因的统计结果:

第三题:结合图形和程序回答下面问题:

编程实现DNA序列向蛋白质序列转换,并可视化输出(20)。

具体程序代码如下:

use warnings;

use strict;

use package1;

BEGIN{unshift(@INC,".");}

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;

    last if(length($geneseq)-$ai<3);

}

my $f=0;

foreach(@ac)

{     

    for(my $u=0;$u<3;$u++)

    {

        if("A" eq substr($_,$u,1))

        {

            substr($ac[$f],$u,1)="T";

        }

        elsif("T" eq substr($_,$u,1))

        {

            substr($ac[$f],$u,1)="A";

        }

        elsif("G" eq substr($_,$u,1))

        {

            substr($ac[$f],$u,1)="C";

        }

        elsif("C" eq substr($_,$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";

}

sub fileopen

{

        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》package1.pm里面,所以一下程序可以在创建包的情况下删除

package package1;

sub mypackage1

{

      system 'cls';

    print" \\n+++++++++++++++++++++++++++++++++你已进入DNA序列向蛋白质氨基酸序列转化程序+++++++++++++++++++++++++++++++++\\n";

        print"============================================================================================================\\n\\n";

    print "请在这里输入基因序所在的文件(例如C:\\gene.txt)\\n";

        print"    位置:";

}

1;

运行以上程序会进入到基因位置输入窗口,界面如下:

输入基因序列所存放的文件的位置,即可运行程序得到基因序列向蛋白质序列的转化结果。界面如下:

第四题:采用模块知识优化整理第三题程序,并根据自己经验结合图形和程序概述模块应用的好处和不足之处(20)。

运用模块的好处:

  运用模块后,其PM文件中的子程序可以被多次重复调用,也可以被不同的程序调用,提高了程序的重复使用率同时也精简了主程序,使程序的可读性提高了。运用模块后,使程序的修改和维护变得简便,容易。模块的调用简单,好用。

模块的不足:

  在建立模块时,要建立好几个PM文件,PM文件多了之后不容易管理,容易把PM文件搞混或搞掉。

文档

perl语言期末考核大作业

成绩表考核作业成绩(70%)回答问题成绩(30%)总成绩Perl程序设计课程考核院系部门:学生专业:学生学号:学生姓名:2012年1月课程大作业内容第一题:请问Bioperl怎样安装和配置,请结合文字图表概述Bioperl的安装、配置与测试,并简述该过程中出现问题解决经历(10分)。一、安装过程:Bioperl的安装(1):安装好activeperl10.1。(2)、打开ppm,得到如下界面:3:,选择Edit>>Preferences。得到如下界面:4:在Preferences添加下面的站点
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top