2011-08-09 3 views
1

J'essaie de générer une matrice pondérée par la position (PWM) dans Biopython à partir de multiples alignements de séquences Clustalw. Je reçois une erreur "Wrong Alphabet" à chaque fois que je le fais avec des alignements espacés. De la lecture de la documentation, je pense que j'ai besoin d'utiliser l'alphabet Gapped pour faire face au caractère '-' dans les alignements gapped. Mais quand je fais cela, cela ne résout toujours pas l'erreur. Quelqu'un voit-il le problème avec ce code, ou a-t-il une meilleure façon de générer un PWM à partir des alignements de Clustal?Un PWM avec des alignements gapped dans Biopython

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

vous devriez vous poser des questions sur Biostar: http://biostar.stackexchange.com/ – Pierre

+0

Merci, fera. – RossCampbell

+0

Pourriez-vous ajouter un lien à votre question sur biostar? – peterjc

Répondre

-1

Vous voulez donc utiliser clustal pour réaliser ces alignements de brides? J'utilise Perl, je vois que vous utilisez Python, mais la logique est fondamentalement la même. J'utilise un appel système à l'exécutable clustal au lieu d'utiliser BioPerl/Biopython. Je crois que le fichier exécutable clustalw2 gère les alignements sans avoir besoin d'appeler un alphabet. Pas sûr à 100%, mais c'est un script que j'utilise qui fonctionne pour moi. Créez un répertoire avec tous vos fichiers d'aligments (j'utilise .fasta mais vous pouvez changer les drapeaux de l'appel système pour en accepter d'autres). C'est mon script Perl, vous devez modifier le chemin de l'exécutable dans la dernière ligne pour correspondre à l'emplacement de Clustal sur votre ordinateur. J'espère que ça aide un peu. En note, c'est bon pour faire beaucoup d'alignements très rapidement, ce qui est ce que je l'utilise, mais si vous cherchez seulement à aligner quelques fichiers, vous pouvez sauter l'ensemble en créant un répertoire et modifier le code pour accepter un filepath et pas un 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"; 
} 

Cheers, Wes

Questions connexes