免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: bioinfor
打印 上一主题 下一主题

这样的程序perl能不能做? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-10-15 14:54 |只看该作者
小弟 也写一个练手,大家帮忙看看哈

论坛徽章:
0
12 [报告]
发表于 2010-10-15 15:49 |只看该作者
1:  %randed=map{$a[int rand (@a)],0}0..99; 要放在foreach循环外面
2:随机可能重复,即可能有2次选择同一基因

论坛徽章:
0
13 [报告]
发表于 2010-10-15 16:54 |只看该作者
恩。老大 说明道理 小弟不明

论坛徽章:
0
14 [报告]
发表于 2010-10-15 16:57 |只看该作者
我试了 修改在foreach外面,确实速度快了。
不过还是不明白为什么呢。

论坛徽章:
0
15 [报告]
发表于 2010-10-15 19:35 |只看该作者
本帖最后由 珞水的大叔 于 2010-10-15 19:37 编辑

回复 1# bioinfor

    看了 liyangole 的脚本以后,我终于看明白你的需求了,代码改了一下,在4楼,应该还有点效率

论坛徽章:
0
16 [报告]
发表于 2010-10-15 19:42 |只看该作者
回复 10# liyangole


    研究一下你的这段代码
  1. for (0..9){
  2.     $key = $_;
  3.     foreach (@b){
  4.         #$count{$key}=0;
  5.         %randed=map{$a[int rand (@a)],0}0..99;                                 
  6.         $count{$key}++ if (exists $randed{$_});           
  7.     }   
  8.     print $count{$key},"\n"
  9. }
复制代码
思路很清晰,应该是执行10次,每次抽取100个@a中的基因和@b比较
而每次执行时,抽取100个基因的动作只能做一次,所以
  1. %randed=map{$a[int rand (@a)],0}0..99;
复制代码
要放在foreach之外啊

论坛徽章:
0
17 [报告]
发表于 2010-10-16 10:54 |只看该作者
perl牛人好多啊

论坛徽章:
0
18 [报告]
发表于 2010-10-16 11:44 |只看该作者
本帖最后由 biophysics 于 2010-10-16 11:47 编辑

运行了一下,珞水的大叔的程序很好很强大!liyangole出来的结果没有达到1000次。不得不说,这里高手云集,我就当没事给大家搞点练习做吧,呵呵。

但现在有个问题是,当两个文件中的基因个数均为100,且完全相同时,出来的1000个相同个数大多为60左右,实际应为全是100才对,是不是因为随机取基因的时候出现了重复取样,即随机取的时候同一个基因取了多次,如基因A、基因B和基因C组成的数据集中,随机取两个基因,perl可能随机取成基因A、基因A,这样实为随机取了一个基因,所以当计算相同基因个数时是1,而不是2。perl有办法可以让取到的基因不再取吗?即单次随机取的100个基因,每个基因都不相同,对于重复1000次的时候每次取的100个基因彼此间有无相同无所谓

附件是具有100个相同基因的两个文件

data (2).rar

807 Bytes, 下载次数: 12

论坛徽章:
0
19 [报告]
发表于 2010-10-16 13:59 |只看该作者
本帖最后由 珞水的大叔 于 2010-10-16 19:21 编辑

回复 18# biophysics


    代码已修改,放在4楼,试试

论坛徽章:
0
20 [报告]
发表于 2010-10-17 10:24 |只看该作者
学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP