1

我正在尝试从 Clustalw 多序列比对生成 Biopython 中的位置加权矩阵(PWM)。每次使用间隙对齐时,我都会收到“错误的字母”错误。通过阅读文档,我认为我需要利用 Gapped Alphabet 来处理间隙对齐中的“-”字符。但是当我这样做时,它仍然无法解决错误。有没有人看到这段代码的问题,或者有更好的方法从有间隙的 Clustal 对齐中生成 PWM?

from Bio.Alphabet import Gapped
alignment = AlignIO.read("filename.clustalw", "clustal", alphabet=Gapped)
m = Motif.Motif()
for a in alignment:
    m.add_instance(a.seq)
m.pwm()
4

1 回答 1

-1

所以你想使用 clustal 来进行这些有间隙的对齐?我用的是Perl,我看你用的是Python,但是逻辑基本一样。我使用对 clustal 可执行文件的系统调用,而不是使用 BioPerl/Biopython。我相信 clustalw2 可执行文件可以处理间隙对齐,而无需调用字母表。不是 100% 肯定,但这是我使用的适合我的脚本。创建一个包含所有对齐文件的目录(我使用 .fasta 但您可以更改系统调用上的标志以接受其他文件)。这是我的 Perl 脚本,您必须修改最后一行中的可执行路径以匹配您计算机上 clustal 的位置。希望这个对你有帮助。作为旁注,这对于非常快速地进行许多对齐很有用,这就是我使用它的目的,但如果您只想对齐几个文件,

#!/usr/bin/perl 


use warnings;

print "Please type the list file name of protein fasta files to align (end the directory    path with a / or this will fail!): ";
$directory = <STDIN>;
chomp $directory;

opendir (DIR,$directory) or die $!;

my @file = readdir DIR;
closedir DIR;

my $add="_align.fasta";

foreach $file (@file) {
     my $infile = "$directory$file";
 (my $fileprefix = $infile) =~ s/\.[^.]+$//;
 my $outfile="$fileprefix$add";
 system "/Users/Wes/Desktop/eggNOG_files/clustalw-2.1-macosx/clustalw2 -INFILE=$infile -OUTFILE=$outfile -OUTPUT=FASTA -tree";
}

干杯,韦斯

于 2012-10-09T05:28:54.013 回答