perl生成特定碱基比例的随机序列的代码

 更新时间:2013年03月01日 11:24:56   作者:  
怎么用perl程序,随机生成一条序列,使ACGT四种碱基的含量分别为0.3,0.3,0.2,0.2!

方法一(不使用模块,by agonyr)

复制代码 代码如下:

#!/usr/bin/perl -w

use strict;

my @seq = ( "A", "T", "C", "G" );
my $length = 10000;

undef my %hash;
$hash{"A"} = int( $length * 0.3 );
$hash{"C"} = int( $length * 0.3 );
$hash{"G"} = int( $length * 0.2 );
$hash{"T"} = int( $length * 0.2 );

my $i = 0;
while ( $i 《 $length ) {
    my $word = $seq[ rand(@seq) ];
    if ( $hash{$word} ) {
        print "$word";
        $i++;
    }
    $hash{$word}--;
}
print "n";

方法二(使用模块,by yixf)

复制代码 代码如下:

#!/usr/bin/perl

use strict;
use warnings;

use BioX::SeqUtils::RandomSequence;

my $randomizer = BioX::SeqUtils::RandomSequence-》new(
    {
        l =》 10000,
        s =》 1,
        y =》 "dna",
        a =》 3,
        c =》 3,
        g =》 2,
        t =》 2
    }
);
print $randomizer-》rand_seq(), "n";

两种方法比较

设定长度为10000,ACGT的比例为3:3:2:2。

复制代码 代码如下:

withoutModule Length=10000 GC=49.42% A=2558,C=2503,G=2439,T=2500,Others=0
withModule Length=10000 GC=50.00% A=3000,C=3000,G=2000,T=2000,Others=0

相关文章

  • perl批量查询ip归属地的方法代码

    perl批量查询ip归属地的方法代码

    由于业务需要,要查询客户的ip地址,将部分地区的客户过滤出来,感谢黑影子和扶凯的帮忙,推荐了IP::QQWry::Decoded这个模块,该模块是专门用来读取qqwry纯真数据库的,用起来非常简单
    2013-04-04
  • Perl哈希表用法解析

    Perl哈希表用法解析

    Perl语言有很多值得学习的地方,那么你对Perl哈希表的概念是否熟悉呢,这里和大家分享一下,希望本文的介绍能让你有所收获
    2013-02-02
  • Perl中的控制结构学习笔记

    Perl中的控制结构学习笔记

    这篇文章主要介绍了Perl中的控制结构学习笔记,本文讲解了条件判断、循环语句、单行条件等内容,需要的朋友可以参考下
    2015-02-02
  • Perl字符串比较和整数比较的区别详解

    Perl字符串比较和整数比较的区别详解

    这篇文章主要介绍了详解Perl字符串比较和整数比较的区别,需要的朋友可以参考下
    2017-09-09
  • Perl AnyEvent中的watcher实例

    Perl AnyEvent中的watcher实例

    这篇文章主要介绍了Perl AnyEvent中的watcher实例,关于AnyEvent请参阅的更多介绍请参阅文中的相关链接,需要的朋友可以参考下
    2014-09-09
  • Perl6中的垃圾收集

    Perl6中的垃圾收集

    今天小编就为大家分享一篇关于perl6垃圾收集的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • perl用变量做句柄介绍

    perl用变量做句柄介绍

    在perl代码中,open 有一个特殊的地方,就是如果你给它一个未定义(这是为什么用hash的原因)的变量做间接文件句柄,那么 Perl 会自动为你定义那个变量,也就是自动把它激活,使它包含一个合适的文件句柄引用
    2013-02-02
  • perl push的用法及子程序返回值的反思

    perl push的用法及子程序返回值的反思

    以下的程序,输出一串数字中比平均值大的数,其中有两个问题值得注意,具体请看程序中的注释
    2013-02-02
  • perl几个文件操作例子

    perl几个文件操作例子

    这篇文章主要介绍了perl几个文件操作例子,讲解了删除文件、读取文件、一次性读取等,需要的朋友可以参考下
    2014-06-06
  • perl与shell获取昨天、明天或多天前的日期的代码

    perl与shell获取昨天、明天或多天前的日期的代码

    这篇文章主要介绍了perl与shell获取昨天、明天或多天前的日期的代码,需要的朋友可以参考下
    2014-04-04

最新评论