ich bin noch Pythonanfänger und habe ein Problem.
ich möchte ein kleines Skript was mittels sys.argv schon funktioniert, so automatisieren das es mir dateien eines bestimmten Formates eines gesamten Ordners abarbeitet.
Das zu lesende File(xdom) hat folgendes Format :
>ID
start end name zahl
würde dann zb so aussehen
>gi|76577793|gb|ABA54179.1| 210
48 64 PF00036 6.5
71 99 PF00036 0.00038
108 136 PF00036 0.00015
152 180 PF00036 5.3e-06
aus einem zweiten File, gleichen namen wie xdom (nur .fasta)sollen die zugehörigen Daten gesucht werden, sieht wie folgt aus
>Ara.784
HNBGTTGGJKKMN
und alles in ein neues file geschrieben werden.
Habe das Skript auch schon versucht umzustellen, was mich soweit gebracht hat das ich gleichbenannte Files finde und lese. Jedoch bekomme ich als Ausgabe im neuen File nur einmal den namen aus dem xdom, jedoch nicht die zugehörige sequenz.
Um zu sehen was alles gelesen wird, habe ich ein
Code: Alles auswählen
print start, end, name
vom xdom genutzt, welches mir auch alle im xdom enthaltenen zeilen angibt.
Ich habe schon dies und das versucht , jedoch habe ich bis nun keine lösung gefunden bzw meinen Fehler gefunden.
Besonders verwirrend find ich, dass das Skript mit Argumenteingabe einwandfrei gelaufen ist.
Wäre echt super wenn mir jemand weiterhelfen könnte bzw einen wink mit dem Zaunpfahl gibt, wo mein Fehler ist.
hier noch mein Code, hab auch versucht viel zu dokumentieren:
Code: Alles auswählen
import os,sys
x=os.listdir('.')
for file in x: # alle files im Ordner
if "fasta" in file: #nur files mit fasta endung
seq = ""
for line in file: #jede Zeile in fasta
if ">" in line: #wenn > in Zeile überspring
continue
seq += line.replace("\n","")
fasta=file.split('.')[0] #split name
for line in open(fasta+"._0.1.pfam.10.xdom"): #zeile im xdom mit gleichem anfangs-namen
if ">" in line:
continue
start, end ,name= line.split("\t")[0:3] #merke start, end, name
print start, end,name #schreibe start, end name
output=open(fasta+"._0.1.pfam.10.fasta",'w').write(">"+ name + \n"+seq[int(start)-1:int(end)]+"\n") #schreibe start, ende name in neues file mit gleichem namen nur neuer endung
LG Martina