Seite 1 von 1

Biopython blastall / formatdb

Verfasst: Dienstag 4. Dezember 2007, 14:04
von ete
Hallo!

Vielleicht kennt sich ja jemand mit Biopython aus...

Ich habs wie in der Doku installiert und nach Eingabe von blastall oder formatdb in der Eingabeaufforderung bekomm ich auch die Parameter angezeigt. Kann ich davon ausgehen, dass es richtig installiert ist?

Dann wollte ich ein fasta File in eine formatdb umwandeln (formatdb -p F -i all_seqs.fasta -n customBLASTdb), er tut auch irgendwas aber ich bekomme weder Output Files noch eine Fehlermeldung. Mir hat dann schnell ein Kollege unter Unix meine Datenbank erstellt, damit ich weiter probieren konnte.

Jetzt wollt ich gegen diese Datenbank blasten (wie in der Doku beschrieben):

Code: Alles auswählen

from Bio.Blast import NCBIStandalone

my_blast_db = "C:\\primerdb"
my_blast_file = "test.fasta"
my_blast_exe = "C:\\blast-2.2.15\\bin\\blastall"

result_handle, error_info = NCBIStandalone.blastall(my_blast_exe, "blastn",
my_blast_db, my_blast_file)
Und bekomme aber folgende Fehlermeldung...

Traceback (most recent call last):
File "C:/Dokumente und Einstellungen/lueck.IPK-GATERSLEBEN/Desktop/blast.py", line 8, in <module>
my_blast_db, my_blast_file)
File "C:\Python25\Lib\site-packages\Bio\Blast\NCBIStandalone.py", line 1499, in blastall
raise ValueError, "blastall does not exist at %s" % blastcmd
ValueError: blastall does not exist at C:\blast-2.2.15\bin\blastall

...obwohl sich blastall unter dem Pfad befindet.

Meine Frage:
hat jemand formatdb und blastall unter Windows zum Laufen bekommen?

Wenn ja, wie?
Stefanie

Verfasst: Dienstag 4. Dezember 2007, 14:41
von Leonidas
Versuch mal

Code: Alles auswählen

my_blast_exe = r"C:\blast-2.2.15\bin\blastall.exe"

Verfasst: Dienstag 4. Dezember 2007, 15:32
von ete
Hätt ich selbst wissen müssen, sorry :oops:

Leider bekomm ich wieder keinen Output...

Kurze Frage:

Warum muss man unter Unix read nicht mit angeben?
Bezieh mich mal auf die Doku:

my_blast_exe = "/usr/local/blast/bin/blastall"

Verfasst: Dienstag 4. Dezember 2007, 17:31
von CM
ete hat geschrieben: Warum muss man unter Unix read nicht mit angeben?
Was meinst Du mit 'read'? Wenn Du auf das 'C:\' vs. '/' abziehlst: '/' ist unter Linux / Unix das 'root'-Verzeichnis und andere Laufwerke werden als andere mountpoints eingegliedert, mein USB-Flash, gerade z. B. als '/media/disk/'.

Gruß,
Christian

Verfasst: Dienstag 4. Dezember 2007, 19:41
von Leonidas
ete hat geschrieben:Warum muss man unter Unix read nicht mit angeben?
Bezieh mich mal auf die Doku:

my_blast_exe = "/usr/local/blast/bin/blastall"
Was meinst du mit `read`? Etwa die `.exe`-Erweiterung? Naja, unter Unices gibt es die einfach nicht.

Verfasst: Mittwoch 5. Dezember 2007, 08:51
von ete
Ich meinte dir r/w/rw Aufrufe vor dem Path. Braucht man die unter Unix nicht?

lg

Verfasst: Mittwoch 5. Dezember 2007, 09:10
von BlackJack
Welche r/w/rw-Aufrufe? Falls Du das kleine r vor der Zeichenkette meinst, das ist kein Aufruf sondern kennzeichnet die Zeichenkette als "raw", d.h. Backslashes haben in dem Zeichenkettenliteral keine besondere Bedeutung, sondern sind einfach nur Backslashes. "Berühmtes" Beispiel:

Code: Alles auswählen

In [77]: print 'C:\\foo\new\test.txt'
C:\foo
ew      est.txt

In [78]: print r'C:\\foo\new\test.txt'
C:\\foo\new\test.txt

In [79]: print 'C:\\\\foo\\new\\test.txt'
C:\\foo\new\test.txt
Bei 77 haben wir einen Backslash statt zwei einen Zeilenumbruch statt eines Backslash und eines 'n' und ein Tabulatorzeichen statt Backslash und 't'. Mit dem kleinen r vor der Zeichenkette sind die Backslashes dann wirklich welche (78). Alternativ kann man auch alle Backslashes "escapen", also verdoppeln (79). Macht aber mehr Arbeit.

Das ist also keine direkte Frage von Windows oder Linux, sondern wie das Zeichenkettenliteral vom Compiler verarbeitet werden soll. Da die in Linux-Pfaden in der Regel nicht vorkommen, sieht man dort das r nur sehr selten.

Verfasst: Mittwoch 5. Dezember 2007, 10:12
von Leonidas
BlackJack, bei normalen Pfaden braucht man unter Windows nach dem Laufwerk keinen doppelten Slash. :) Das ist nur für UNC-Pfade notwendig (wobei.. notwendig.. müsste man mal probieren.. es ist auf jeden Fall nur dort üblich).

Verfasst: Mittwoch 5. Dezember 2007, 10:25
von BlackJack
Hach ja, das ist bei mir schon so lange her… :-)

Verfasst: Mittwoch 5. Dezember 2007, 10:43
von ete
aha, danke :)