免费注册 查看新帖 |

Chinaunix

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

如何找序列中的包含关系! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-23 15:28 |只看该作者 |倒序浏览
我有这样一个文件:
里面有一系列的序列:
如:
AAAAAAAAAGATTGAG                SEQ.1893836.16.1
AAAAAAAAAGATTGAGACGAATT         SEQ.1549482.23.1
AAAAAAAAAGATTGAGCCGAA           SEQ.2553655.21.1
AAAAAAAAAGATTGAGCCGAAA          SEQ.2706125.22.3
AAAAAAAAAGATTGAGCCGAAT          SEQ.1372232.22.9
AAAAAAAAAGATTGAGCCGAATA         SEQ.1365232.23.4
AAAAAAAAAGATTGAGCCGAGTTA                SEQ.889399.24.1
AAAAAAAAAGATTGAGCCGCAAAA                SEQ.1263859.24.1
AAAAAAAAAGATTGAGTCGAATA         SEQ.970919.23.1
AAAAAAAAAGATTGTCACAACT          SEQ.142122.22.1
AAAAAAAAAGATTTGCGAAAACT         SEQ.785497.23.1
AAAAAAAAAGCAAAGAACAAAAAG                SEQ.926879.24.1
AAAAAAAAAGCTCTTCAGGAGGG         SEQ.50491.23.1
AAAAAAAAAGTGATACTTCTTGTT                SEQ.1347612.24.1
AAAAAAAAATAAAAAACAAGA           SEQ.1258876.21.1
AAAAAAAAATAAAGCAAGAA            SEQ.2556803.20.1
AAAAAAAAATACGAACCGTTCTTT                SEQ.1157920.24.1
AAAAAAAAATAGCGTGGGAATGAG                SEQ.1457720.24.1
AAAAAAAAATAGGAAAAAA             SEQ.1060112.19.1
AAAAAAAAATAGGCTTATCAACCA                SEQ.1528036.24.1
AAAAAAAAATCATCATACAGGGT         SEQ.556325.23.1
AAAAAAAAATCGACGGCTAGATA         SEQ.1452090.23.1
AAAAAAAAATGCAGTCTTGTCAA         SEQ.2525543.23.1
AAAAAAAAATGCATTGATCAT           SEQ.1264660.21.1
AAAAAAAAATGTTCTCATGGTT          SEQ.2274085.22.1
AAAAAAAAATTAAACGGGCCGTGC                SEQ.880386.24.1
AAAAAAAAATTCGATATAGA            SEQ.2571452.20.1
AAAAAAAACACCGAGCTATCGGCT                SEQ.1882674.24.1
AAAAAAAACACTCAGGATTCAGGA                SEQ.2492497.24.1
AAAAAAAACACTCTGCAACAGATG                SEQ.1064.24.1
AAAAAAAACACTTTCGGCGCCAAC                SEQ.1954907.24.1
AAAAAAAACATGTAGTCTT             SEQ.2131152.19.1
AAAAAAAACCCGACTCGGGCACACA               SEQ.1023067.25.1
AAAAAAAACCGGACAAATCA            SEQ.2385057.20.1
AAAAAAAACCGGTCCGTTTGGATC                SEQ.1419987.24.1
AAAAAAAACCGTTTAGATACATGT                SEQ.1275097.24.1
AAAAAAAACCTACTTGAGCTACGC                SEQ.2530317.24.1
AAAAAAAACGCCTTCAGCAGGGCC                SEQ.1595165.24.1
AAAAAAAACGTCTAATACATGTAA                SEQ.1756499.24.1
AAAAAAAACGTCTAGATACATAGA                SEQ.155114.24.1
AAAAAAAACGTCTAGATACATGTA                SEQ.316197.24.1
AAAAAAAACGTGGGATGCTA            SEQ.1811897.20.1
AAAAAAAACGTTTAGATACATGTA                SEQ.901852.24.1
AAAAAAAACGTTTGGCAATCGAAA                SEQ.2696829.24.1
AAAAAAAACTAAAAATAAAAGA          SEQ.2667333.22.1
AAAAAAAACTCGGTCGCAGGCCTG                SEQ.1867874.24.1
AAAAAAAACTGCTCCAACGGCATA                SEQ.1044149.24.2
AAAAAAAAGACACACGAGGTTGGT                SEQ.1133483.24.1
AAAAAAAAGATACATTATCAT           SEQ.1951462.21.1
AAAAAAAAGATCAGAGAT              SEQ.2455401.18.1
AAAAAAAAGATTGAGCCGAA            SEQ.626739.20.4
AAAAAAAAGATTGAGCCGAAACT         SEQ.854926.23.1
AAAAAAAAGATTGAGCCGAAAG          SEQ.1664333.22.1
AAAAAAAAGATTGAGCCGAAT           SEQ.2647549.21.4
AAAAAAAAGATTGAGCCGAATA          SEQ.822665.22.3
AAAAAAAAGCACAACTCGGCTGCT                SEQ.73260.24.1
AAAAAAAAGCTGTGCCCTAGCTGG                SEQ.375077.24.1
AAAAAAAAGGAACAGTGACATATT                SEQ.226404.24.1
AAAAAAAAGGACAAATGCAGTGCA                SEQ.1071214.24.1
AAAAAAAAGGTATGTAGTGTGCCT                SEQ.2467414.24.1
AAAAAAAAGTAAAAAAAAAAAA          SEQ.1895978.22.1
AAAAAAAAGTAAATTACAGATAAC                SEQ.2427386.24.1
AAAAAAAAGTCAATTCGTTCGA          SEQ.2234367.22.1
AAAAAAAAGTCACATCCGA             SEQ.2424071.19.1
AAAAAAAAGTGTCTAGATACACGT                SEQ.2033632.24.1
AAAAAAAAGTGTCTCTTGGGGACT                SEQ.2382025.24.1
AAAAAAAAGTTTAGATACATGTAAT               SEQ.1263057.25.1
AAAAAAAATATGGAACATAGGGAGT               SEQ.1391063.25.1
AAAAAAAATATGTGGAAA              SEQ.2506062.18.1
AAAAAAAATCCAGATGTTGATGA         SEQ.360584.23.1
AAAAAAAATCCTTTAGGAACG           SEQ.2306220.21.1
AAAAAAAATCGTCCATTGTACC          SEQ.184068.22.1
AAAAAAAATCTAGATGTTGGTCAG                SEQ.2464218.24.1
AAAAAAAATCTGGATTCGTGATTT                SEQ.1703616.24.1
AAAAAAAATGACATGTGAGTCCAA                SEQ.492275.24.1
AAAAAAAATGATCGGTATCGGTCG                SEQ.1784908.24.1
AAAAAAAATGCATTGAAAAA            SEQ.1196651.20.1
AAAAAAAATGCATTGATCA             SEQ.226298.19.1
AAAAAAAATGCATTGATCATA           SEQ.1992480.21.1
AAAAAAAATGGACAAGATTTAAAT                SEQ.2627544.24.1
AAAAAAAATTAACCAAATCGCATG                SEQ.1340145.24.1
AAAAAAAATTCTATCCATTCGGAT                SEQ.564597.24.1
AAAAAAAATTCTGCGATGAGAAGT                SEQ.515474.24.1
CAAGGTCTGAAATCCTTAGTA           SEQ.1147435.21.1
CAAGGTCTTCATGCCGGCTTA           SEQ.263499.21.1
CAAGGTGAACAGCCTCT               SEQ.110162.17.6
CAAGGTGAACAGCCTCTG              SEQ.842849.18.5
CAAGGTGAACAGCCTCTGCTGT          SEQ.841302.22.1
CAAGGTGAACAGCCTCTGG             SEQ.1427456.19.2
CAAGGTGAACAGCCTCTGGC            SEQ.295890.20.30
CAAGGTGAACAGCCTCTGGCC           SEQ.1155377.21.9
CAAGGTGAACAGCCTCTGGCCA          SEQ.247839.22.14
CAAGGTGAACAGCCTCTGGCCAA         SEQ.2085008.23.5
CAAGGTGAACAGCCTCTGGCCAAT                SEQ.1241836.24.2
CAAGGTGAACAGCCTCTGGCCAATG               SEQ.150863.25.2
CAAGGTGAACAGCCTCTGGCCACTC               SEQ.2289679.25.1
CAAGGTGAACAGCCTCTGGCCCA         SEQ.197175.23.1
CAAGGTGAACAGCCTCTGGCCTGT                SEQ.1487567.24.1
CAAGGTGAACAGCCTGGCCA            SEQ.642268.20.1
CAAGGTGAACAGCTCTGG              SEQ.1372063.18.1
CAAGGTGAACAGTCTCTGGC            SEQ.305520.20.1
CAAGGTGAACGGCCTTGGC             SEQ.370621.19.1
CAAGGTGAAGAAATTCAAC             SEQ.1298817.19.1
CAAGGTGACAACAGTAAC              SEQ.12876.18.1
CAAGGTGACAACAGTAACCTG           SEQ.895208.21.19
CAAGGTGACAACAGTAACCTGCC         SEQ.1890248.23.1
CAAGGTGACACAAGTAACCTGCCG                SEQ.79758.24.1
CAAGGTGACAGCAGTAACCTG           SEQ.910509.21.1
CAAGGTGACCCTGCTTTTTCAGGGA               SEQ.1499918.25.1
CAAGGTGAGCAGCCTCTGGCCAA         SEQ.2571296.23.1
CAAGGTGAGGGCGCCCCTGCAGGC                SEQ.228694.24.1
CAAGGTGAGGGCGGCCCGGCCGGT                SEQ.1871447.24.1
CAAGGTGAGTTTACCCACCTCGGC                SEQ.1872162.24.1
CAAGGTGATCGTCCCAATACCA          SEQ.220011.22.1
CAAGGTGATGAAGGAAATTT            SEQ.2523909.20.1
CAAGGTGCACTACTCACTGCACGA                SEQ.1680725.24.4
CAAGGTGCGGGGCCTTCCTGTGGA                SEQ.172187.24.1
CAAGGTGCTAAGACAGGTGCTTT         SEQ.245869.23.1
CAAGGTGGACACAGGACACAG           SEQ.2626465.21.1
CAAGGTGGACAGCCTCTGGC            SEQ.1929138.20.1
CAAGGTGGACGCATTTTTGCTAA         SEQ.635404.23.1
CAAGGTGGCCAGCGAGTGCT            SEQ.170744.20.1
CAAGGTGGCTGCGTCCAAGCGGG         SEQ.542762.23.1
CAAGGTGGGACTATTCCCAA            SEQ.763696.20.1
CAAGGTGGTAACTACACCAGGGT         SEQ.1202265.23.1
CAAGGTGGTACGCTGAACGCACCG                SEQ.661635.24.1
。。。。。


我想找出像这样的所有group;


CGGGGCATGACGTCACGATGATG
CGGGGCATGACGTCACGAT
     GGGCATGACGTCACG
              ATGACGTCACGATGAT
              ATGACGTCACGATGATG

即包含关系,该怎么来想这个问题呢?
我sort了一下,这能找出
CGGGGCATGACGTCACGATGATG
CGGGGCATGACGTCACGAT
or
CGGGGCATGACGTCACGATGATG
              ATGACGTCACGATGATG
但是这种的
CGGGGCATGACGTCACGATGATG
         GCATGACGTCACG
就找不出来了

谢谢!

论坛徽章:
0
2 [报告]
发表于 2008-05-23 15:49 |只看该作者
#!/usr/bin/perl

#!/usr/bin/perl

use strict;
use warnings;

my @string;

while (<DATA>) {
    chomp;
        push @string, (split)[0];
}

@string = sort {length($b) <=> length($a)} @string;

for my $tpl (0 .. $#string-1) {
        print "$tpl [$string[$tpl]] Have:\n";
    for ($tpl+1 .. $#string) {
            print "\t$_ $string[$_]\n" if $string[$tpl] =~ m/$string[$_]/;
        }
}

__DATA__
AAAAAAAAAGATTGAG                SEQ.1893836.16.1
AAAAAAAAAGATTGAGACGAATT         SEQ.1549482.23.1
AAAAAAAAAGATTGAGCCGAA           SEQ.2553655.21.1
AAAAAAAAAGATTGAGCCGAAA          SEQ.2706125.22.3
AAAAAAAAAGATTGAGCCGAAT          SEQ.1372232.22.9
AAAAAAAAAGATTGAGCCGAATA         SEQ.1365232.23.4
AAAAAAAAAGATTGAGCCGAGTTA                SEQ.889399.24.1
AAAAAAAAAGATTGAGCCGCAAAA                SEQ.1263859.24.1
AAAAAAAAAGATTGAGTCGAATA         SEQ.970919.23.1
AAAAAAAAAGATTGTCACAACT          SEQ.142122.22.1
AAAAAAAAAGATTTGCGAAAACT         SEQ.785497.23.1
AAAAAAAAAGCAAAGAACAAAAAG                SEQ.926879.24.1
AAAAAAAAAGCTCTTCAGGAGGG         SEQ.50491.23.1
AAAAAAAAAGTGATACTTCTTGTT                SEQ.1347612.24.1
AAAAAAAAATAAAAAACAAGA           SEQ.1258876.21.1
AAAAAAAAATAAAGCAAGAA            SEQ.2556803.20.1
AAAAAAAAATACGAACCGTTCTTT                SEQ.1157920.24.1
AAAAAAAAATAGCGTGGGAATGAG                SEQ.1457720.24.1
AAAAAAAAATAGGAAAAAA             SEQ.1060112.19.1
AAAAAAAAATAGGCTTATCAACCA                SEQ.1528036.24.1
AAAAAAAAATCATCATACAGGGT         SEQ.556325.23.1
AAAAAAAAATCGACGGCTAGATA         SEQ.1452090.23.1
AAAAAAAAATGCAGTCTTGTCAA         SEQ.2525543.23.1
AAAAAAAAATGCATTGATCAT           SEQ.1264660.21.1
AAAAAAAAATGTTCTCATGGTT          SEQ.2274085.22.1
AAAAAAAAATTAAACGGGCCGTGC                SEQ.880386.24.1
AAAAAAAAATTCGATATAGA            SEQ.2571452.20.1
AAAAAAAACACCGAGCTATCGGCT                SEQ.1882674.24.1
AAAAAAAACACTCAGGATTCAGGA                SEQ.2492497.24.1
AAAAAAAACACTCTGCAACAGATG                SEQ.1064.24.1
AAAAAAAACACTTTCGGCGCCAAC                SEQ.1954907.24.1
AAAAAAAACATGTAGTCTT             SEQ.2131152.19.1
AAAAAAAACCCGACTCGGGCACACA               SEQ.1023067.25.1
AAAAAAAACCGGACAAATCA            SEQ.2385057.20.1
AAAAAAAACCGGTCCGTTTGGATC                SEQ.1419987.24.1
AAAAAAAACCGTTTAGATACATGT                SEQ.1275097.24.1
AAAAAAAACCTACTTGAGCTACGC                SEQ.2530317.24.1
AAAAAAAACGCCTTCAGCAGGGCC                SEQ.1595165.24.1
AAAAAAAACGTCTAATACATGTAA                SEQ.1756499.24.1
AAAAAAAACGTCTAGATACATAGA                SEQ.155114.24.1
AAAAAAAACGTCTAGATACATGTA                SEQ.316197.24.1
AAAAAAAACGTGGGATGCTA            SEQ.1811897.20.1
AAAAAAAACGTTTAGATACATGTA                SEQ.901852.24.1
AAAAAAAACGTTTGGCAATCGAAA                SEQ.2696829.24.1
AAAAAAAACTAAAAATAAAAGA          SEQ.2667333.22.1
AAAAAAAACTCGGTCGCAGGCCTG                SEQ.1867874.24.1
AAAAAAAACTGCTCCAACGGCATA                SEQ.1044149.24.2
AAAAAAAAGACACACGAGGTTGGT                SEQ.1133483.24.1
AAAAAAAAGATACATTATCAT           SEQ.1951462.21.1
AAAAAAAAGATCAGAGAT              SEQ.2455401.18.1
AAAAAAAAGATTGAGCCGAA            SEQ.626739.20.4
AAAAAAAAGATTGAGCCGAAACT         SEQ.854926.23.1
AAAAAAAAGATTGAGCCGAAAG          SEQ.1664333.22.1
AAAAAAAAGATTGAGCCGAAT           SEQ.2647549.21.4
AAAAAAAAGATTGAGCCGAATA          SEQ.822665.22.3
AAAAAAAAGCACAACTCGGCTGCT                SEQ.73260.24.1
AAAAAAAAGCTGTGCCCTAGCTGG                SEQ.375077.24.1
AAAAAAAAGGAACAGTGACATATT                SEQ.226404.24.1
AAAAAAAAGGACAAATGCAGTGCA                SEQ.1071214.24.1
AAAAAAAAGGTATGTAGTGTGCCT                SEQ.2467414.24.1
AAAAAAAAGTAAAAAAAAAAAA          SEQ.1895978.22.1
AAAAAAAAGTAAATTACAGATAAC                SEQ.2427386.24.1
AAAAAAAAGTCAATTCGTTCGA          SEQ.2234367.22.1
AAAAAAAAGTCACATCCGA             SEQ.2424071.19.1
AAAAAAAAGTGTCTAGATACACGT                SEQ.2033632.24.1
AAAAAAAAGTGTCTCTTGGGGACT                SEQ.2382025.24.1
AAAAAAAAGTTTAGATACATGTAAT               SEQ.1263057.25.1
AAAAAAAATATGGAACATAGGGAGT               SEQ.1391063.25.1
AAAAAAAATATGTGGAAA              SEQ.2506062.18.1
AAAAAAAATCCAGATGTTGATGA         SEQ.360584.23.1
AAAAAAAATCCTTTAGGAACG           SEQ.2306220.21.1
AAAAAAAATCGTCCATTGTACC          SEQ.184068.22.1
AAAAAAAATCTAGATGTTGGTCAG                SEQ.2464218.24.1
AAAAAAAATCTGGATTCGTGATTT                SEQ.1703616.24.1
AAAAAAAATGACATGTGAGTCCAA                SEQ.492275.24.1
AAAAAAAATGATCGGTATCGGTCG                SEQ.1784908.24.1
AAAAAAAATGCATTGAAAAA            SEQ.1196651.20.1
AAAAAAAATGCATTGATCA             SEQ.226298.19.1
AAAAAAAATGCATTGATCATA           SEQ.1992480.21.1
AAAAAAAATGGACAAGATTTAAAT                SEQ.2627544.24.1
AAAAAAAATTAACCAAATCGCATG                SEQ.1340145.24.1
AAAAAAAATTCTATCCATTCGGAT                SEQ.564597.24.1
AAAAAAAATTCTGCGATGAGAAGT                SEQ.515474.24.1
CAAGGTCTGAAATCCTTAGTA           SEQ.1147435.21.1
CAAGGTCTTCATGCCGGCTTA           SEQ.263499.21.1
CAAGGTGAACAGCCTCT               SEQ.110162.17.6
CAAGGTGAACAGCCTCTG              SEQ.842849.18.5
CAAGGTGAACAGCCTCTGCTGT          SEQ.841302.22.1
CAAGGTGAACAGCCTCTGG             SEQ.1427456.19.2
CAAGGTGAACAGCCTCTGGC            SEQ.295890.20.30
CAAGGTGAACAGCCTCTGGCC           SEQ.1155377.21.9
CAAGGTGAACAGCCTCTGGCCA          SEQ.247839.22.14
CAAGGTGAACAGCCTCTGGCCAA         SEQ.2085008.23.5
CAAGGTGAACAGCCTCTGGCCAAT                SEQ.1241836.24.2
CAAGGTGAACAGCCTCTGGCCAATG               SEQ.150863.25.2
CAAGGTGAACAGCCTCTGGCCACTC               SEQ.2289679.25.1
CAAGGTGAACAGCCTCTGGCCCA         SEQ.197175.23.1
CAAGGTGAACAGCCTCTGGCCTGT                SEQ.1487567.24.1
CAAGGTGAACAGCCTGGCCA            SEQ.642268.20.1
CAAGGTGAACAGCTCTGG              SEQ.1372063.18.1
CAAGGTGAACAGTCTCTGGC            SEQ.305520.20.1
CAAGGTGAACGGCCTTGGC             SEQ.370621.19.1
CAAGGTGAAGAAATTCAAC             SEQ.1298817.19.1
CAAGGTGACAACAGTAAC              SEQ.12876.18.1
CAAGGTGACAACAGTAACCTG           SEQ.895208.21.19
CAAGGTGACAACAGTAACCTGCC         SEQ.1890248.23.1
CAAGGTGACACAAGTAACCTGCCG                SEQ.79758.24.1
CAAGGTGACAGCAGTAACCTG           SEQ.910509.21.1
CAAGGTGACCCTGCTTTTTCAGGGA               SEQ.1499918.25.1
CAAGGTGAGCAGCCTCTGGCCAA         SEQ.2571296.23.1
CAAGGTGAGGGCGCCCCTGCAGGC                SEQ.228694.24.1
CAAGGTGAGGGCGGCCCGGCCGGT                SEQ.1871447.24.1
CAAGGTGAGTTTACCCACCTCGGC                SEQ.1872162.24.1
CAAGGTGATCGTCCCAATACCA          SEQ.220011.22.1
CAAGGTGATGAAGGAAATTT            SEQ.2523909.20.1
CAAGGTGCACTACTCACTGCACGA                SEQ.1680725.24.4
CAAGGTGCGGGGCCTTCCTGTGGA                SEQ.172187.24.1
CAAGGTGCTAAGACAGGTGCTTT         SEQ.245869.23.1
CAAGGTGGACACAGGACACAG           SEQ.2626465.21.1
CAAGGTGGACAGCCTCTGGC            SEQ.1929138.20.1
CAAGGTGGACGCATTTTTGCTAA         SEQ.635404.23.1
CAAGGTGGCCAGCGAGTGCT            SEQ.170744.20.1
CAAGGTGGCTGCGTCCAAGCGGG         SEQ.542762.23.1
CAAGGTGGGACTATTCCCAA            SEQ.763696.20.1
CAAGGTGGTAACTACACCAGGGT         SEQ.1202265.23.1
CAAGGTGGTACGCTGAACGCACCG                SEQ.661635.24.1

[ 本帖最后由 cobrawgl 于 2008-5-23 15:58 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-05-23 16:05 |只看该作者
把打印结果美化了一下

#!/usr/bin/perl

use strict;
use warnings;

my @string;

while (<DATA>) {
    chomp;
        push @string, (split)[0];
}

@string = sort {length($b) <=> length($a)} @string;

for my $tpl (0 .. $#string-1) {
        my @result = ();
        for ($tpl+1 .. $#string) {
            push @result, $string[$_] if $string[$tpl] =~ m/$string[$_]/;
        }
        if (@result) {
            print "[$string[$tpl]] Have:\n";
                print "\t$_\n" for @result;
        }
}

__DATA__
AAAAAAAAAGATTGAG                SEQ.1893836.16.1
AAAAAAAAAGATTGAGACGAATT         SEQ.1549482.23.1
AAAAAAAAAGATTGAGCCGAA           SEQ.2553655.21.1
AAAAAAAAAGATTGAGCCGAAA          SEQ.2706125.22.3
AAAAAAAAAGATTGAGCCGAAT          SEQ.1372232.22.9
AAAAAAAAAGATTGAGCCGAATA         SEQ.1365232.23.4
AAAAAAAAAGATTGAGCCGAGTTA                SEQ.889399.24.1
AAAAAAAAAGATTGAGCCGCAAAA                SEQ.1263859.24.1
AAAAAAAAAGATTGAGTCGAATA         SEQ.970919.23.1

论坛徽章:
0
4 [报告]
发表于 2008-05-23 17:07 |只看该作者
我想把这样的一块输出来 怎么弄呢


   
              
              
如我的序列是这样的
ACCGTTTAGATACATGT                SEQ.1275097.24.1
CGGGGCATGACGTCACGATGATG           SEQ.197109.23.1
AAAAAAAACCTACTTGAGCTACGC                SEQ.2530317.24.1
AAAAAAAACGCCTTCAGCAGGGCC        SEQ.1945375.23.1
CGGGGCATGACGTCACGAT               SEQ.1595165.24.1
AAAAAAAACGTCTAATACATGTAA             SEQ.1971895.23.1
CGGGGCATGACGTCACGATGATG             SEQ.1756499.24.1
ATGACGTCACGATGAT                          SEQ.5697175.23.1
GGGCATGACGTCACG                         SEQ.197174.23.2
CAAGGTGAACAGCCTCTGGCCCA         SEQ.197175.23.1
CAAGGTGAACAGCCTCTGGCCTGT                SEQ.1487567.24.1


我想得到这样的结果:
CGGGGCATGACGTCACGATGATG
CGGGGCATGACGTCACGAT
     GGGCATGACGTCACG
              ATGACGTCACGATGAT
              ATGACGTCACGATGATG
怎么输出呢

论坛徽章:
0
5 [报告]
发表于 2008-05-23 17:11 |只看该作者
即这样的中间包含关系也要一块输出
CGGGGCATGACGTCACGATGATG
             ATGACGTCACGATGAT

论坛徽章:
0
6 [报告]
发表于 2008-05-23 18:38 |只看该作者
用 index()

if (@result) {
            print "$string[$tpl]\n";
                for (@result) {
                                    print ' 'x(index $string[$tpl], $_);
                                        print "$_\n";
                                }
                        print "\n";
        }

论坛徽章:
0
7 [报告]
发表于 2008-05-23 20:02 |只看该作者
这样的话你会重复输出结果,如:
AAAAAAAAAAAAGGGGGGGGGGGG
AAAAAAAAAAAAGGGGGGGGG
AAAAAAAAAAAAGGGGG
        AAAAAAAAGGGGG


你输出的结果会是:

AAAAAAAAAAAAGGGGGGGGGGGG
AAAAAAAAAAAAGGGGGGGGG
AAAAAAAAAAAAGGGGG
        AAAAAAAAGGGGG


AAAAAAAAAAAAGGGGGGGGG
AAAAAAAAAAAAGGGGG
        AAAAAAAAGGGGG


AAAAAAAAAAAAGGGGG
        AAAAAAAAGGGGG

而我只想输出第一个结果即:
AAAAAAAAAAAAGGGGGGGGGGGG
AAAAAAAAAAAAGGGGGGGGG
AAAAAAAAAAAAGGGGG
        AAAAAAAAGGGGG

论坛徽章:
0
8 [报告]
发表于 2008-05-23 20:11 |只看该作者
那就加个 flag 吧

#!/usr/bin/perl

use strict;
use warnings;

my @string;

while (<DATA>) {
    chomp;
        push @string, (split)[0];
}

@string = sort {length($b) <=> length($a)} @string;

my @flag;                  <----------------
$flag[$_] = 0 for (0 .. $#string);      <-------------

for my $tpl (0 .. $#string-1) {
        my @result = ();
        for ($tpl+1 .. $#string) {
                        next if $flag[$_];  <---------------
            if ($string[$tpl] =~ m/$string[$_]/) {
                            push @result, $string[$_];
                                $flag[$_] = 1;  <--------------
                        }
        }
        if (@result) {
                print "$string[$tpl]\n";
                for (@result) {
                        print ' 'x(index $string[$tpl], $_);
                        print "$_\n";
                }
                print "\n";
        }
}


__DATA__
ACCGTTTAGATACATGT                SEQ.1275097.24.1
CGGGGCATGACGTCACGATGATG           SEQ.197109.23.1
AAAAAAAACCTACTTGAGCTACGC                SEQ.2530317.24.1
AAAAAAAACGCCTTCAGCAGGGCC        SEQ.1945375.23.1
CGGGGCATGACGTCACGAT               SEQ.1595165.24.1
AAAAAAAACGTCTAATACATGTAA             SEQ.1971895.23.1
CGGGGCATGACGTCACGATGATG             SEQ.1756499.24.1
ATGACGTCACGATGAT                          SEQ.5697175.23.1
GGGCATGACGTCACG                         SEQ.197174.23.2
CAAGGTGAACAGCCTCTGGCCCA         SEQ.197175.23.1
CAAGGTGAACAGCCTCTGGCCTGT                SEQ.1487567.24.1

[ 本帖最后由 cobrawgl 于 2008-5-23 20:12 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2008-05-23 20:46 |只看该作者
谢谢!

论坛徽章:
0
10 [报告]
发表于 2008-05-23 21:00 |只看该作者
我觉得这样效率会更高些
for my $tpl (0 .. $#string-1) {
        my @result = ();
        next if $flag[$_];   ####<---------------
        for ($tpl+1 .. $#string) {
                        
            if ($string[$tpl] =~ m/$string[$_]/) {
                            push @result, $string[$_];
                                $flag[$_] = 1;  <--------------
                        }
        }
        if (@result) {
                print "$string[$tpl]\n";
                for (@result) {
                        print ' 'x(index $string[$tpl], $_);
                        print "$_\n";
                }
                print "\n";
        }
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP