【问题标题】:Finding Palindromes(perfect palindromes) in more than one protein sequences using perl [closed]使用 perl 在多个蛋白质序列中查找回文(完美回文)[关闭]
【发布时间】:2014-08-27 06:05:38
【问题描述】:

我是 Perl(正则表达式)的新手。我需要一个例子来说明如何编写一个程序来找出多个蛋白质序列中的回文(完美)(在一个文件中让它成为 4 个序列,数量为 200 个氨基酸)我必须过滤掉回文和回文序列在序列中的位置。

>TRE|Q47404|Q47404 (409 AA) Glycosyl transferase [Escherichia coli]
MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIVAHLGQLKKAE
LFIQKFSRRSNFLIVLATKKNTEMPRLILEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF
YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTGTYKTEKKKPLVNI
NFYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKIFEFKTIPLVKSSTRMDNLIH

>TRE|O06435|O06435 (492 AA) SynE [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNN
LLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTI
QPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNN
LHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDY
IFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMVTINPR

>TRE|Q8VRL9|Q8VRL9 (492 AA) SiaD [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNN
LLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTI
QPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNN
LHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDY

我需要完美回文的输出以及它们的位置。 我浏览了很多文章,但没有更好的主意。请为此建议我一些技术和程序。

【问题讨论】:

  • 阅读perlretut - Recursive Patterns。它包含一个用于查找回文的正则表达式示例。
  • 如果您提供一些输入和预期输出示例,您可能会得到更好的答案。
  • 请检查,我已包含示例。 !!
  • 我必须检查每个字符串。我的意思是让第一个字符串为 x,结尾为 y so ,x 到 y,x+1 到 y,x+2 到 y,x+3 到 y 等等。

标签: regex algorithm perl bioinformatics palindrome


【解决方案1】:

此挑战需要三个正则表达式功能:

  1. perlretut - Recursive Patterns — 寻找回文

  2. perlretut - Positive Lookahead Assertions — 查找重叠的匹配项

  3. perlretut - Position Information — 确定匹配项在字符串中的位置。

将这些放在一起会得到这样的结果:

use strict;
use warnings;

my $pp = qr/(?: (\w) (?1) \g{-1} | \w? )/ix;

local $/ = '';

while (<DATA>) {
    chomp;
    my ($header, @lines) = split "\n";
    my $data = join '', @lines;

    print "$header\n$data\n";

    while ($data =~ /(?=($pp))/g) {
        print "$-[0] - $1\n" if length($1) > 2;
    }
}

__DATA__
>TRE|Q47404|Q47404 (409 AA) Glycosyl transferase [Escherichia coli]
MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIVAHLGQLKKAE
LFIQKFSRRSNFLIVLATKKNTEMPRLILEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWF
YNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTGTYKTEKKKPLVNI
NFYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKIFEFKTIPLVKSSTRMDNLIH

>TRE|O06435|O06435 (492 AA) SynE [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNN
LLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTI
QPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNN
LHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDY
IFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMVTINPR

>TRE|Q8VRL9|Q8VRL9 (492 AA) SiaD [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNN
LLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTI
QPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNN
LHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDY

输出:

>TRE|Q47404|Q47404 (409 AA) Glycosyl transferase [Escherichia coli]
MIFDASLKKLRKLFVNPIGFFRDSWFFNSKNKAEELLSPLKIKSKNIFIVAHLGQLKKAELFIQKFSRRSNFLIVLATKKNTEMPRLILEQMNKKLFSSYKLLFIPTEPNTFSLKKVIWFYNVYKYIVLNSKAKDAYFMSYAQHYAIFIWLFKKNNIRCSLIEEGTGTYKTEKKKPLVNINFYSWIINSIILFHYPDLKFENVYGTFPNLLKEKFDAKKIFEFKTIPLVKSSTRMDNLIH
6 - LKKL
29 - KNK
40 - KIK
42 - KSK
46 - IFI
66 - SRRS
86 - LIL
123 - YKY
131 - KAK
146 - IFI
164 - GTG
165 - TGT
172 - KKK
178 - NIN
211 - KEK
220 - FEF
>TRE|O06435|O06435 (492 AA) SynE [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDYIFVSQRYPVSDEVYYKTIVETLNQMSLRIEGKIFIKLHPKEMENKNIMSLFLNMVTINPR
26 - FSSF
55 - KLK
70 - MKM
114 - KLLK
135 - SLLS
137 - LSL
154 - TAT
205 - NAN
220 - STS
222 - SQS
271 - KIFIK
272 - IFI
280 - EME
283 - NKN
289 - LFL
>TRE|Q8VRL9|Q8VRL9 (492 AA) SiaD [Neisseria meningitidis]
MLQKIRKALFHPKKFFQDSQWFATPLFSSFAPKSNLFIISTFAQLNQAHSLTKMQKLKNNLLVILYTTQNMKMPKLIQKSVDKELFSVTYMFELPRKPGIVSPKKFLYIQRGYKKLLKTIQPAHLYVMSFAGHYSSLLSLAKKMNITTHLVEEGTATYAPLLESFTYKPTKFEQRFVGNNLHQKGYFDKFDILHVAFPEYAKKIFNANEYHRFFAHSGGISTSQSIAKIQDKYRISQNDY
26 - FSSF
55 - KLK
70 - MKM
114 - KLLK
135 - SLLS
137 - LSL
154 - TAT
205 - NAN
220 - STS
222 - SQS

【讨论】:

  • 谢谢米勒.. !!您有任何博客或邮件 ID 可以与您联系。请分享
【解决方案2】:
x="abaasdasdusduhfikliilkjhgjhgjhgh"

def checkpalindrome(str,i):
    if len(str)>2:
        rev=str[::-1]
        if rev==str:
            print i,":",str
i=0
for l in x:
    str=""
    k=i
    while k < len(x):
        str=str+x[k]
        checkpalindrome(str,i)
        k=k+1
    i=i+1

这会创建所有字符串组合并将其传递给回文函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2012-06-27
    • 2013-01-16
    • 1970-01-01
    • 2014-05-13
    相关资源
    最近更新 更多