使用 List::Util这个模块就是随机模块,可以用来搭配使用shuttle算法
思路:
1将所有的密码子放到一个数组里面
2利用这个模块将该数组进行打乱得到新数组
3然后利用foreach对新数组里的元素进行取样,就能达到随机抽样的目的了,多执行几次输出的结果就算是重复抽样了。
举一个不完善的例子(在我之前的代码的基础上修改得到)。
#其他 *** 作
use List::Util; #Perl语言的随机模块使用
#句柄 *** 作
my @a;
my @b;
while(<$in>)#读取数据集文件,主要为了处理密码子,你自己完善吧
{
#其他 *** 作
@a=split; #将密码子存入该数组
push @b,$a[0]; #把记录的密码子依次放好到b数组中
}
@b=List::Util::shuffle @b; #实现shuffle算法的核心语句。
foreach my $aa( sort@b[04999]) #这是我原来代码部分,我只取了打乱数组的前5000个信息,我采用了sort是想让顺序更乱,就更有随机性的要求了,抽样更合适,当然你也可以不使用sort,感觉shuttle的算法的随机性足够了。
{
print $out "$aa\n";
}
#关闭句柄
以上就是关于perl程序随机抽样:我有一个比对好的DNA序列样本,现在要对密码子随机抽样,求编程高手帮写个perl脚本全部的内容,包括:perl程序随机抽样:我有一个比对好的DNA序列样本,现在要对密码子随机抽样,求编程高手帮写个perl脚本、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)