免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2733 | 回复: 4
打印 上一主题 下一主题

哈希求频率分布 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-10-30 16:01 |显示全部楼层 |倒序浏览
本帖最后由 tonyliuy 于 2015-10-30 17:03 编辑

最近想要求字符串中某个字符的大致分布,所以先画了频率分布图,但是很奇怪,有些点的频率数据跑到了别的点上,求大神指导,哈希出了什么问题?该如何修改代码?
第一段主体代码:
  1. $rate = $num/length($str);
  2. if ($rate < 1) {
  3. $devide = int($rate*100);
  4. $rates{$devide} ++;
  5. } else {
  6. $rates{99} ++}
  7. }
复制代码
数据跑出来之后都变成这样了


第二段的代码跟第一段基本差不多,生成的图像是这个样子的了:

两组数据都有几十个,全是这个样子,第一张图是连续数据,在50附近出现了小幅波动,第二张图是离散数据,就是1-99这100个数,统计出来在30和60附近出现了较大幅度的波动(之前也在50附近出现过)。求大神指导,哈希到底是怎么个情况?原数据应该是连续变化的,不应该存在这种波动,我应该如何修改代码?

论坛徽章:
0
2 [报告]
发表于 2015-10-30 17:00 |显示全部楼层
谢谢解答,第一张图的连续数据出现的小幅波动很可能是这个原因造成的,比较奇怪的是第二张图,第二张图的数据是很严格的0-99这99个整数,最开始直接用数组的时候a[rate] ++数据在50附近出现了类似的异常,改用哈希就没有异常了,数据很正常,这段代码是因为第一段数据用了int直接copy过来的代码,因为觉得int一个整数还是自己没影响,就没有修改,于是第二张图就出现了这个诡异的现象。第一张图很可能是这个原因,第二张图乘以100后都是离散的整数,这个波动又是怎么产生的呢?回复 2# zhlong8


   

论坛徽章:
0
3 [报告]
发表于 2015-10-30 17:01 |显示全部楼层
另外四舍五入是哪条指令呢?新人没用过四舍五入回复 2# zhlong8


   

论坛徽章:
0
4 [报告]
发表于 2015-10-30 17:10 |显示全部楼层
  1. $str[9] =~ s/N//;
  2. $num = () = $read =~ m/c|g/ig;
  3. $rate = $num/length($read);
复制代码


脚本就是这段代码加上一楼的代码,求一段基因的CG含量,第一段是模板CG含量,长度不同,可以认为是连续的,第二段是基因的读取数据,每条都是100,这个用了一步替换之后可能少于100,但是结果差异好大,完全看不懂... ...回复 5# zhlong8



   

论坛徽章:
0
5 [报告]
发表于 2015-10-30 18:04 |显示全部楼层
第一张图的数据作为连续性数据,本不应该出现这样的问题啊,+0.5也还是连续型的。我的意思是指前面解释的,出现0.499999999同样也可能出现0.509999999,而且这个几率不大,连续数据每个图都有那个波动也不科学啊。回复 7# zhlong8


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP