免费注册 查看新帖 |

Chinaunix

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

如何对100百万行的字符串得到唯一字符串及计数? [复制链接]

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
11 [报告]
发表于 2010-11-17 10:05 |只看该作者
最好能提供10多兆字节的样本数据,wxlfh@qq.com

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
12 [报告]
发表于 2010-11-17 10:47 |只看该作者
随手写了个,不知道对楼主有没有帮助,呵呵。
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. open my $in, "<", "Logfile.log" or die "Open Logfile.log error.\n";
  5. open my $out,">", "Logfile.out" or die "Create file error.\n";

  6. my %hash;
  7. while (<$in>) {
  8.     $id = (split /\t/)[5];  #第6列是ID
  9.     $hash{$id}++;
  10. }

  11. while (my ($key,$value)= each %hash) {
  12.     print $out "$key\t$value\n";
  13. }

  14. print "There are ",scalar keys %hash," IDs.\n";

  15. close $in;
  16. close $out;
复制代码

论坛徽章:
0
13 [报告]
发表于 2010-11-17 15:11 |只看该作者
hash是经过优化的,可以试试看啊。

论坛徽章:
0
14 [报告]
发表于 2010-11-17 15:28 |只看该作者
随手写了个,不知道对楼主有没有帮助,呵呵。
wxlfh 发表于 2010-11-17 10:47



    友情提示下:split比regex慢很多。

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
15 [报告]
发表于 2010-11-17 16:27 |只看该作者
友情提示下:split比regex慢很多。
兰花仙子 发表于 2010-11-17 15:28



    是吗?受教了。

论坛徽章:
0
16 [报告]
发表于 2010-11-19 10:01 |只看该作者
本帖最后由 yisn 于 2010-11-19 10:04 编辑

谢谢各位大展雄风~ 俺先试试看再来反馈.

上面的日志文件是随便说的. 然后发现其实我的字符串是有1000百万而不是100百万,内牛满面...

文件是一行行atcg的字符串,类似
cagggcagaaccttgtactgcacctgcagtgcagagcaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
cagggcagaaccttgtactgcacctgcagtgcagagccaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
cagggcagaaccttgtactgcacctgcagtgcagaggccaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
cagggcagaaccttgtactgcacctgcagtgcagaggccaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
cagggcagaaccttgtactgcacctgcagtgcagagggccaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
cagggcagaaccttgtactgcacctgcagtgcagaggggccaaacacagaagtcttctttggtaaaggaaccagactcacagttgtag
...

字符串的重复度也不是很多,但是必须把相同的组合起来并计数.
比如90G的文件,组合后剩60G这样.

论坛徽章:
0
17 [报告]
发表于 2010-11-19 10:28 |只看该作者
请改用 天河一号超级计算机

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
18 [报告]
发表于 2010-11-19 10:29 |只看该作者
楼上抢我台词……

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
19 [报告]
发表于 2010-11-19 12:52 |只看该作者
本帖最后由 jason680 于 2010-11-19 12:56 编辑
谢谢各位大展雄风~ 俺先试试看再来反馈.

上面的日志文件是随便说的. 然后发现其实我的字符串是有1000百万 ...
yisn 发表于 2010-11-19 10:01



Mastering Perl for Bioinformatics
http://oreilly.com/catalog/mperlbio/chapter/ch09.pdf

http://www.bioperl.org/wiki/Getting_Started

工欲善其事,必先利其器

论坛徽章:
0
20 [报告]
发表于 2010-11-19 14:04 |只看该作者
用hash呗,内存不够就用外存
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP