免费注册 查看新帖 |

Chinaunix

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

索引一段序列 [复制链接]

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-09 10:48 |只看该作者 |倒序浏览
我有一段序列:

>1
AAAATAAATCACCTTTCGGGCTAACTTTGCGGTCGAGAACTCATTACCCAAATCCTACAATCACAAATTTG
ACATACTTAGAATTAAAAAACCAAACCACACACAGAAACAAGGTTAAGATAAATGAACAAAGGAGAATGATTTAGTTAGTAACCTCAACATTAGAGAGCT
TTCCTTCGTTTAATACTTTGAAGATGGCAAAACCACCTGGCGTCTCAAACAGTATTAGCATTTTTACAAGCTCCTGAAAAGAAGAAAAAACAAGATTAAG
AGAAACCCTTGAATCAACTCAAAGTCACCAAACTTGCAAGTTAGTGTTTTACGAGCTAAAGCCATTAAGCTAGTACGAAACAATATTCAAGGTAAAACTT
TTTCCCTGTTTCGAAGTTTACAAATCAGAATAATAGTTAAGGCAGATACTCTGTTCAAATTCTTGAAAATCCGACAAAGAACAGAACTATACTTTGTCAA
AGTCTTAGAATTTTGGAAGCTTATTTGCCATAACAACGAAGAAAGAGAGGGCGAGAGAGATTCAGTACCTTAGAGGGTTAACGCACAACTACAGCTTTAG
AGAGAGCTAAAATCAGGAGCCGCGATTCTGCTAGGGTTTAAGATGGTTTTTA
>2
TAAAAAAAAAATAACATCATTATATAATATATAGAGTTTAAAACATCTCAAAAACAAATTCATCATATTTTGTGATTCGAAATTTTAAGAATGAACATAT
ATTAACTAATTGGCGAAAAATGCGTGGGTTCAACGTCCCGCAACGAATAAAATATTTTGACAATGATTCATAAACATATTATAAATAAGATCAACATTAA
TAAAATAAATAATTTTTTTTTGTGGATGGATTTGGTTTGGCAGGACGTTACTTAATAACAATTGTAAACTATAAAATAATTTACAAATTTT
ATATATATTAATTTAAAAAATGAATTGTCTACGCGGTGTACCGCATGTTAAAATTTAGTTTCTATATATTTTAGAAACAACTTTGAATTTATACTTTAAT
ATTGAATAAACAACACCAAACCCCCTATTATTCATGTTATCCATTTTTTGAAATAACAGAAAAATAGAAAATAATCATA
AGAAACCAAACAAAATATACACAACAAAAAATCAAATCATAAAGCTTTAAATACATATAAGTGAAAGATCAAATCATAAAACTATAAAGACATGAAGTAC
CTAAAACATAATATATGCTAAAAAGAAATTCAAAATACAAAATCTTCTACGTATTTGAATAATTCATCCAAACCTAAAACTGTATATCTGTTCACATATT
TGAATGAAAAATCAAATAAGCAAATCAAGCAAGAAATATTAATGATGTCTATGTGATTTTTTTTTTTGT
>3
TTAATCTGCTTTTTTTTTTTTTTTTTAATTTACTCATATTAGATTTAGCTTAATTTTGAGACTGTTAGCTTTCGGTGTGAACAAAAGAAATTTGTGAAAT
TTGATATTGTTGATACATTCTCTAGAAATTTTGGAAAGATTGTGTGTTTCTTTTCAAAATTCAAATATTAATAACGCACCAAAATATCTGAATAGAAAGA
ATAAATAATGCGCCAAAATATTGATATGATGAAAGGTTCCCGTCTCAATATGTTTTTAGACCCTAGGTAAAACTAAAT
TTACATATCCTTTTCACACGATTTTTTTTTTTTTTTTTTGACTCTTTTACTTAAAGGTTTTTTTAAAAAAATTTGCCATGCACCCTGGCAATGGCTTTTG
CCCCCACCTCCCCCACATTAAGCCAATCTTGTTGCATGGCCATCTCCCCTGACGAACACCATTAAAGATTCATCTATATGTGGTA
GCCACTGAGTAGACTTAATAGAGCATTAAATAAATGAAATTCGTGGATGCAAATTGTAGAAGAACTAGTATTTAACGGAGTGTTGCTTCATCACAAATTC
>4......等等好多
我想从每一条中挑选出GCGT**六个碱基(两个星号代表GCGT后面两个模糊匹配)的位置,如果可以最好把对应的六个碱基序列也拿出来。
结果应该像这样:>1 GCGTAT 65(起始位置) GCGTTT 99(起始位置)
                      >2 GCGTGA  87(起始位置) GCGTAA 654(起始位置) GCGTTT 756(起始位置)
                      >3 ........
                      我写的起始位置不一定对,是我自己随意写的。
坐等大神!!!感激!!!

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
2 [报告]
发表于 2014-03-10 00:20 |只看该作者
本帖最后由 rubyish 于 2014-03-10 22:54 编辑

biru:
  1. 1>      GCGTAT 0, GCGTCT 216
  2. 2>      GCGTGG 121
  3. 3>
复制代码
  1. #!/usr/bin/perl
  2. $/ = ">";
  3. <DATA>;

  4. while (<DATA>) {
  5.     chop if />$/;
  6.     my @str = split /\n/;
  7.     my $num = shift @str;
  8.     my $str = join '', @str;
  9.     my @index;
  10.    
  11.     while ( $str =~ /GCGT../g ) {
  12.         push @index, "$& $-[0]";
  13.     }

  14.     print "$num>\t", join ', ', @index;
  15.     print "\n";
  16. }


  17. __DATA__
  18. >1
  19. GCGTAT
  20. AAAATAAATCACCTTTCGGGCTAACTTTGCGGTCGAGAACTCATTACCCAAATCCTACAATCACAAATTTG
  21. ACATACTTAGAATTAAAAAACCAAACCACACACAGAAACAAGGTTAAGATAAATGAACAAAGGAGAATGATTTAGTTAGTAACCTCAACATTAGAGAGCT
  22. TTCCTTCGTTTAATACTTTGAAGATGGCAAAACCACCTGGCGTCTCAAACAGTATTAGCATTTTTACAAGCTCCTGAAAAGAAGAAAAAACAAGATTAAG
  23. AGAAACCCTTGAATCAACTCAAAGTCACCAAACTTGCAAGTTAGTGTTTTACGAGCTAAAGCCATTAAGCTAGTACGAAACAATATTCAAGGTAAAACTT
  24. TTTCCCTGTTTCGAAGTTTACAAATCAGAATAATAGTTAAGGCAGATACTCTGTTCAAATTCTTGAAAATCCGACAAAGAACAGAACTATACTTTGTCAA
  25. AGTCTTAGAATTTTGGAAGCTTATTTGCCATAACAACGAAGAAAGAGAGGGCGAGAGAGATTCAGTACCTTAGAGGGTTAACGCACAACTACAGCTTTAG
  26. AGAGAGCTAAAATCAGGAGCCGCGATTCTGCTAGGGTTTAAGATGGTTTTTA
  27. >2
  28. TAAAAAAAAAATAACATCATTATATAATATATAGAGTTTAAAACATCTCAAAAACAAATTCATCATATTTTGTGATTCGAAATTTTAAGAATGAACATAT
  29. ATTAACTAATTGGCGAAAAATGCGTGGGTTCAACGTCCCGCAACGAATAAAATATTTTGACAATGATTCATAAACATATTATAAATAAGATCAACATTAA
  30. TAAAATAAATAATTTTTTTTTGTGGATGGATTTGGTTTGGCAGGACGTTACTTAATAACAATTGTAAACTATAAAATAATTTACAAATTTT
  31. ATATATATTAATTTAAAAAATGAATTGTCTACGCGGTGTACCGCATGTTAAAATTTAGTTTCTATATATTTTAGAAACAACTTTGAATTTATACTTTAAT
  32. ATTGAATAAACAACACCAAACCCCCTATTATTCATGTTATCCATTTTTTGAAATAACAGAAAAATAGAAAATAATCATA
  33. AGAAACCAAACAAAATATACACAACAAAAAATCAAATCATAAAGCTTTAAATACATATAAGTGAAAGATCAAATCATAAAACTATAAAGACATGAAGTAC
  34. CTAAAACATAATATATGCTAAAAAGAAATTCAAAATACAAAATCTTCTACGTATTTGAATAATTCATCCAAACCTAAAACTGTATATCTGTTCACATATT
  35. TGAATGAAAAATCAAATAAGCAAATCAAGCAAGAAATATTAATGATGTCTATGTGATTTTTTTTTTTGT
  36. >3
  37. TTAATCTGCTTTTTTTTTTTTTTTTTAATTTACTCATATTAGATTTAGCTTAATTTTGAGACTGTTAGCTTTCGGTGTGAACAAAAGAAATTTGTGAAAT
  38. TTGATATTGTTGATACATTCTCTAGAAATTTTGGAAAGATTGTGTGTTTCTTTTCAAAATTCAAATATTAATAACGCACCAAAATATCTGAATAGAAAGA
  39. ATAAATAATGCGCCAAAATATTGATATGATGAAAGGTTCCCGTCTCAATATGTTTTTAGACCCTAGGTAAAACTAAAT
  40. TTACATATCCTTTTCACACGATTTTTTTTTTTTTTTTTTGACTCTTTTACTTAAAGGTTTTTTTAAAAAAATTTGCCATGCACCCTGGCAATGGCTTTTG
  41. CCCCCACCTCCCCCACATTAAGCCAATCTTGTTGCATGGCCATCTCCCCTGACGAACACCATTAAAGATTCATCTATATGTGGTA
  42. GCCACTGAGTAGACTTAATAGAGCATTAAATAAATGAAATTCGTGGATGCAAATTGTAGAAGAACTAGTATTTAACGGAGTGTTGCTTCATCACAAATTC
复制代码

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
3 [报告]
发表于 2014-03-10 02:54 |只看该作者
本帖最后由 rubyish 于 2014-03-10 22:55 编辑

or overlap - 交叠
>1
GCGTGCGTAA
  1. 1>      GCGTGC 0, GCGTAA 4
复制代码
result:
  1. 1>      GCGTGC 0, GCGTAA 4, GCGTCT 220
  2. 2>      GCGTGG 121
  3. 3>
复制代码
  1. #!/usr/bin/perl

  2. $/ = ">";
  3. <DATA>;

  4. while (<DATA>) {
  5.     chop if />$/;
  6.     my @str = split /\n/;
  7.     my $num = shift @str;
  8.     my $str = join '', @str;
  9.     my @index;
  10.     $str =~ /GCGT..(?{ push @index, "$& $-[0]" })(*F)/;
  11.     print "$num>\t", join ', ', @index;
  12.     print "\n";
  13. }

  14. __DATA__
  15. >1
  16. GCGTGCGTAA
  17. AAAATAAATCACCTTTCGGGCTAACTTTGCGGTCGAGAACTCATTACCCAAATCCTACAATCACAAATTTG
  18. ACATACTTAGAATTAAAAAACCAAACCACACACAGAAACAAGGTTAAGATAAATGAACAAAGGAGAATGATTTAGTTAGTAACCTCAACATTAGAGAGCT
  19. TTCCTTCGTTTAATACTTTGAAGATGGCAAAACCACCTGGCGTCTCAAACAGTATTAGCATTTTTACAAGCTCCTGAAAAGAAGAAAAAACAAGATTAAG
  20. AGAAACCCTTGAATCAACTCAAAGTCACCAAACTTGCAAGTTAGTGTTTTACGAGCTAAAGCCATTAAGCTAGTACGAAACAATATTCAAGGTAAAACTT
  21. TTTCCCTGTTTCGAAGTTTACAAATCAGAATAATAGTTAAGGCAGATACTCTGTTCAAATTCTTGAAAATCCGACAAAGAACAGAACTATACTTTGTCAA
  22. AGTCTTAGAATTTTGGAAGCTTATTTGCCATAACAACGAAGAAAGAGAGGGCGAGAGAGATTCAGTACCTTAGAGGGTTAACGCACAACTACAGCTTTAG
  23. AGAGAGCTAAAATCAGGAGCCGCGATTCTGCTAGGGTTTAAGATGGTTTTTA
  24. >2
  25. TAAAAAAAAAATAACATCATTATATAATATATAGAGTTTAAAACATCTCAAAAACAAATTCATCATATTTTGTGATTCGAAATTTTAAGAATGAACATAT
  26. ATTAACTAATTGGCGAAAAATGCGTGGGTTCAACGTCCCGCAACGAATAAAATATTTTGACAATGATTCATAAACATATTATAAATAAGATCAACATTAA
  27. TAAAATAAATAATTTTTTTTTGTGGATGGATTTGGTTTGGCAGGACGTTACTTAATAACAATTGTAAACTATAAAATAATTTACAAATTTT
  28. ATATATATTAATTTAAAAAATGAATTGTCTACGCGGTGTACCGCATGTTAAAATTTAGTTTCTATATATTTTAGAAACAACTTTGAATTTATACTTTAAT
  29. ATTGAATAAACAACACCAAACCCCCTATTATTCATGTTATCCATTTTTTGAAATAACAGAAAAATAGAAAATAATCATA
  30. AGAAACCAAACAAAATATACACAACAAAAAATCAAATCATAAAGCTTTAAATACATATAAGTGAAAGATCAAATCATAAAACTATAAAGACATGAAGTAC
  31. CTAAAACATAATATATGCTAAAAAGAAATTCAAAATACAAAATCTTCTACGTATTTGAATAATTCATCCAAACCTAAAACTGTATATCTGTTCACATATT
  32. TGAATGAAAAATCAAATAAGCAAATCAAGCAAGAAATATTAATGATGTCTATGTGATTTTTTTTTTTGT
  33. >3
  34. TTAATCTGCTTTTTTTTTTTTTTTTTAATTTACTCATATTAGATTTAGCTTAATTTTGAGACTGTTAGCTTTCGGTGTGAACAAAAGAAATTTGTGAAAT
  35. TTGATATTGTTGATACATTCTCTAGAAATTTTGGAAAGATTGTGTGTTTCTTTTCAAAATTCAAATATTAATAACGCACCAAAATATCTGAATAGAAAGA
  36. ATAAATAATGCGCCAAAATATTGATATGATGAAAGGTTCCCGTCTCAATATGTTTTTAGACCCTAGGTAAAACTAAAT
  37. TTACATATCCTTTTCACACGATTTTTTTTTTTTTTTTTTGACTCTTTTACTTAAAGGTTTTTTTAAAAAAATTTGCCATGCACCCTGGCAATGGCTTTTG
  38. CCCCCACCTCCCCCACATTAAGCCAATCTTGTTGCATGGCCATCTCCCCTGACGAACACCATTAAAGATTCATCTATATGTGGTA
  39. GCCACTGAGTAGACTTAATAGAGCATTAAATAAATGAAATTCGTGGATGCAAATTGTAGAAGAACTAGTATTTAACGGAGTGTTGCTTCATCACAAATTC
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
4 [报告]
发表于 2014-03-10 10:55 |只看该作者
本帖最后由 yestreenstars 于 2014-03-10 10:56 编辑

use 5.010;
my ( %h, $k, $l );
while (<DATA>) {
        chomp;
        if (/>/) {
                $l = 0;
                $k = $_;
                $h{$_} = $_;
                next;
        }
        while (/GCGT../) {
                my $i = index( $_, $& );
                $h{$k} .= " $& " . ( $l + $i );
                s/GCGT/    /;
        }
        $l += length;
}
say $h{$_} for sort keys %h;

论坛徽章:
7
戌狗
日期:2013-12-15 20:43:38技术图书徽章
日期:2014-03-05 01:33:12技术图书徽章
日期:2014-03-15 20:31:17未羊
日期:2014-03-25 23:48:20丑牛
日期:2014-04-07 22:37:44巳蛇
日期:2014-04-11 21:58:0915-16赛季CBA联赛之青岛
日期:2016-03-17 20:36:13
5 [报告]
发表于 2014-03-11 03:01 |只看该作者
本帖最后由 rubyish 于 2014-03-10 23:03 编辑

回复 4# yestreenstars

maybe small bug~
  1. __DATA__
  2. >1
  3. GCGTGCGTAAACGCGT
  4. AAAATAAATCACGCGTAAAAGCGTA
  5. >2
  6. AAAATAAATCACGCGTAA
  7. AAATCAC
  8. >3
  9. TAAATCACG
复制代码
  1. 1>      GCGTGC 0, GCGTAA 4, GCGTAA 12, GCGTAA 28
  2. 2>      GCGTAA 12
  3. 3>
复制代码
  1. >1 GCGTGC 0 GCGTAA 4 GCGTAA 28
  2. >2 GCGTAA 12
  3. >3
复制代码

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
6 [报告]
发表于 2014-03-11 09:42 |只看该作者
本帖最后由 yestreenstars 于 2014-03-11 11:27 编辑

回复 5# rubyish

So lucky to reply you, I got a book badges.

Thanks for debug. I have modify my script.

The script after modify:

use 5.010;
my ( %h, $k, $s );
while (<DATA>) {
        chomp;
        if (/>/) {
                undef $s;
                $k = $_;
                $h{$_} = $_;
                next;
        }
        $s .= $_;
        while ( $s =~ /GCGT../ ) {
                my $i = index( $s, $& );
                $h{$k} .= " $& $i";
                $s =~ s/GCGT/    /;
        }
}
say $h{$_} for sort keys %h;

论坛徽章:
0
7 [报告]
发表于 2014-03-13 17:13 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
8 [报告]
发表于 2014-03-14 16:44 |只看该作者
学习了!感谢!回复 2# rubyish


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP