ШИМ с расщепленными выравниваниями в Biopython - PullRequest
1 голос
/ 09 августа 2011

Я пытаюсь сгенерировать Позиционно-взвешенную матрицу (ШИМ) в Biopython из нескольких последовательных выравниваний Clustalw. Я получаю сообщение об ошибке «Неправильный алфавит» каждый раз, когда делаю это с выравниванием с пробелами. Прочитав документацию, я думаю, что мне нужно использовать алфавит с пробелами, чтобы иметь дело с символом «-» в выравниваниях с пробелами. Но когда я делаю это, это все равно не устраняет ошибку. Кто-нибудь видит проблему с этим кодом, или есть лучший способ для генерации ШИМ из зазоров Clustal?

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()

1 Ответ

0 голосов
/ 09 октября 2012

То есть вы хотите использовать clustal для создания этих расстановок?Я использую Perl, я вижу, что вы используете Python, но логика в основном та же.Я использую системный вызов к исполняемому файлу clustal вместо BioPerl / Biopython.Я полагаю, что исполняемый файл clustalw2 обрабатывает расщепленные выравнивания без необходимости вызывать алфавит.Не уверен на 100 процентов, но я использую этот скрипт, который мне подходит.Создайте каталог со всеми вашими файлами aligments (я использую .fasta, но вы можете изменить флаги на системном вызове, чтобы принимать других).Это мой Perl-скрипт, вы должны изменить путь к исполняемому файлу в последней строке, чтобы он соответствовал расположению clustal на вашем компьютере.Надеюсь это немного поможет.В качестве примечания, это хорошо для очень быстрого выполнения многих выравниваний, для чего я его и использую, но если вы хотите выровнять только несколько файлов, возможно, вы захотите пропустить весь процесс создания каталога и изменить код для принятияfilepath, а не dirpath.

#!/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";
}

Приветствия, Уэс

...