免费注册 查看新帖 |

Chinaunix

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

perl的内存占用,求教&探讨 [复制链接]

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
11 [报告]
发表于 2011-04-04 08:34 |只看该作者
回复 9# mingxw


    谢谢,尤其是

            while(length($DNA)>$out_line_length) {
                    print OUT substr($DNA,0,$out_line_length,""),"\n";
            }

受教了!

论坛徽章:
0
12 [报告]
发表于 2011-04-04 22:24 |只看该作者
本帖最后由 longbow0 于 2011-04-04 22:33 编辑

回复 10# chenhao392


    perl 函数 index 可以返回子串在字符串中的位置。只是不知道对于很长的字符串效率怎么样。

  1. while ( my $seq = $seqi->next_seq ) {
  2.     my $chr_seq = $seq->seq;

  3.     my @sseqs = split /[a-z]+/, $chr_seq; # 提取大写序列
  4.    
  5.     for my $sseq ( @sseqs ) {
  6.         next if length( $sseq ) < 500;

  7.         my $start = index($chr_seq, $sseq);
  8.         my $end = $start + length( $sseq ) -1;

  9.         print 'Start: ', $start, "\t", 'End: ', $end, "\n", $sseq, "\n"; # 直接打印
  10.      }
  11. }
复制代码

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
13 [报告]
发表于 2011-04-05 01:01 |只看该作者
回复 12# longbow0


    这个,应该不佳吧...
    要重新匹配序列的位置,生物信息有个概念叫blast的,是个启发算法。即便如此,blast完整个基因组.....也要很久了...
    当然完全相同的片段,定位该会容易些...
    但是...一个特定功能的基因,在基因组上可能有多个copy的...

    我之所以想去掉小写的片段,就是因为这些地方都是重复片段,非常影响index()一类的效率..
    我给出一个blast算法的大概说明吧:

     1. 将用于搜索的序列(query seq)打散成 三字符长的一系列片段,如ABCDE,变成ABC, BCD, CDE...
     2. 给每一个三字符片段进行生物学上的评估(如BLOSM62矩阵),找出更有意义的片段:高分片段
     3. 将这些片段map在基因组上
     4. 将每个片段在基因组上向两侧延伸,即query seq和基因组序列进行联配(alignment)..遇到match就加分,mismatch或者gap就减分..
     5. 保留在基因组上达到一定分数的联配结果,称为(HSP:High Score..什么的)
     6. 将这些HSP综合成最后的blast输出(比如两个临近的HSP组合成一个更大的片段)

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
14 [报告]
发表于 2011-04-05 01:05 |只看该作者
才看到这个帖子,留个痕迹,备看
http://bbs.chinaunix.net/viewthr ... p;extra=&page=1

论坛徽章:
0
15 [报告]
发表于 2011-04-05 10:04 |只看该作者
perl...

论坛徽章:
0
16 [报告]
发表于 2011-04-05 10:33 |只看该作者
实际上,对于你所要求的 500 bp 以上的序列,出现重复的概率很小。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP