Ich versuche, vordefinierte Sequenz aus Pdb-Eingabedatei in Python zu drucken, aber ich bekomme kein erwartetes Ergebnis. Ich bin neu in Python, und ich habe auch Verzeichnis importieren, aber es funktioniert nicht. zeigt nichts an (Fehler kann nicht gefunden werden). Es läuft nur ohne Ausgabe.So drucken Sie vordefinierte Sequenz in Python
import os
os.chdir('C:\Users\Vishnu\Desktop\Test_folder\Input')
for path, dirs, pdbfile in os.walk('/C:\Users\Vishnu\Desktop\Test_folder\Input'):
for line in pdbfile:
if line[:6] != "HETATM":
continue
chainID = line[21:22]
atomID = line[13:16].strip()
if chainID not in ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'):
continue
if atomID not in ('C4B', 'O4B', 'C1B', 'C2B', 'C3B'):
continue
with open('C:\Users\Vishnu\Desktop\Test_folder\Input', 'r') as fh:
new = [line.rstrip() for line in fh]
with open('C:\Users\Vishnu\Desktop\Test_folder\Output', 'w') as fh:
[fh.write('%s\n' % line) for line in new]
fh.write((line.rstrip()))
Erwartete Ausgabe:
HETATM 3788 C4B NAI A 302 52.695 15.486 8.535 1.00 57.28 C
HETATM 3789 O4B NAI A 302 52.258 14.631 7.456 1.00 56.26 O
HETATM 3794 C1B NAI A 302 53.348 13.816 7.022 1.00 53.44 C
HETATM 3792 C2B NAI A 302 54.537 14.748 7.190 1.00 50.93 C
HETATM 3789 O4B NAI A 302 52.258 14.631 7.456 1.00 56.26 O
HETATM 3794 C1B NAI A 302 53.348 13.816 7.022 1.00 53.44 C
HETATM 3792 C2B NAI A 302 54.537 14.748 7.190 1.00 50.93 C
HETATM 3790 C3B NAI A 302 54.225 15.525 8.465 1.00 52.99 C
HETATM 3794 C1B NAI A 302 53.348 13.816 7.022 1.00 53.44 C
HETATM 3792 C2B NAI A 302 54.537 14.748 7.190 1.00 50.93 C
HETATM 3790 C3B NAI A 302 54.225 15.525 8.465 1.00 52.99 C
HETATM 3788 C4B NAI A 302 52.695 15.486 8.535 1.00 57.28 C
HETATM 3792 C2B NAI A 302 54.537 14.748 7.190 1.00 50.93 C
HETATM 3790 C3B NAI A 302 54.225 15.525 8.465 1.00 52.99 C
HETATM 3788 C4B NAI A 302 52.695 15.486 8.535 1.00 57.28 C
HETATM 3789 O4B NAI A 302 52.258 14.631 7.456 1.00 56.26 O
HETATM 3790 C3B NAI A 302 54.225 15.525 8.465 1.00 52.99 C
HETATM 3788 C4B NAI A 302 52.695 15.486 8.535 1.00 57.28 C
HETATM 3789 O4B NAI A 302 52.258 14.631 7.456 1.00 56.26 O
HETATM 3794 C1B NAI A 302 53.348 13.816 7.022 1.00 53.44 C
gleiches Format auch für B-Kette.
Wie vordefinierte Sequenz drucken? Linie [21:22] ist dort Ketten-ID, Ketten-ID kann A bis H sein. Wie definiert man A bis H Ketten-ID?
Ich bin nicht in der Lage, hintereinander zu drucken, kann mir jemand wissen, wie man vordefinierte Sequenz in Python drucken?
Nach Antwort:
ich oben Code mit folgendem Code aktualisiert:
n = 4
for chain, atoms in d.items():
for atom, line in atoms.items():
for i in range(len(atom)-n+1):
for j in range(n):
print d[chain][atomIDs[i+j]]
print
Ich mag zwei weiteren Absatz verlängern, aber nicht ausgegeben
Hallo Vish. Sie können 'line = line.rstrip()' hinter 'for line in pdbfile:' ausführen, oder Sie können 'print (line, end = '')' ausführen, um zu vermeiden, dass zwei Zeilenwechselzeichen gedruckt werden. –
Nach 'für Zeile in pdbfile 'würde ich' chain = line [21:22] 'machen. Ansonsten sind "21" und "22" durchweg magische Zahlen. Und danach würde ich 'wenn Chain-in ('A', 'B', ...)' anstelle von mehreren 'if-Zeile [21:22] ==" A/B/... "tun:' –
I würde 'atomID = line [12:16] .strip()' machen und tun, wenn atomID in ('C4B', 'O4B', ...): 'anstatt mehrere if-Anweisungen zu haben. –