我正在使用蛋白質數據庫中的文件,它看起來像這樣。使用python比較文件中不同行的兩個單詞
SITE 2 AC1 15 ASN A 306 LEU A 309 ILE A 310 PHE A 313
SITE 3 AC1 15 ARG A 316 LEU A 326 ALA A 327 ILE A 345
SITE 4 AC1 15 CYS A 432 HIS A 435 HOH A 504
CRYST1 64.511 64.511 111.465 90.00 90.00 90.00 P 43 21 2 8
ORIGX1 1.000000 0.000000 0.000000 0.00000
ORIGX2 0.000000 1.000000 0.000000 0.00000
ORIGX3 0.000000 0.000000 1.000000 0.00000
SCALE1 0.015501 0.000000 0.000000 0.00000
SCALE2 0.000000 0.015501 0.000000 0.00000
SCALE3 0.000000 0.000000 0.008971 0.00000
ATOM 1 N ASP A 229 29.461 51.231 44.569 1.00 47.64 N
ATOM 2 CA ASP A 229 29.341 51.990 43.290 1.00 47.13 C
ATOM 3 C ASP A 229 30.455 51.566 42.330 1.00 45.62 C
ATOM 4 O ASP A 229 31.598 51.376 42.743 1.00 47.18 O
ATOM 5 CB ASP A 229 29.433 53.493 43.567 1.00 49.27 C
ATOM 6 CG ASP A 229 28.817 54.329 42.463 1.00 51.26 C
ATOM 7 OD1 ASP A 229 27.603 54.172 42.206 1.00 53.47 O
ATOM 8 OD2 ASP A 229 29.542 55.145 41.856 1.00 52.96 O
ATOM 9 N MET A 230 30.119 51.424 41.051 1.00 41.99 N
ATOM 10 CA MET A 230 31.092 51.004 40.043 1.00 36.38 C
首先,我需要僅提取標記ATOM行的第四列,其是氨基酸序列,其特異性原子是的一部分。我在這裏完成了。
import gzip
class Manual_Seq:
def parseSeq(self, path):
with gzip.open(path,'r') as file_content:
for line in file_content:
newLine = line.split(' ')[0]
if newLine == 'ATOM':
AA = line[17]+line[18]+line[19]
print AA
其產生這種
ASP
ASP
ASP
.....
MET
但我現在需要的輸出,是隻輸出第一ASP和第一次見面和等,並將它們連接起來所以它會是這樣的。
ASPMET
我想也許我會盡力重複先行線,直到它從第一輸出不同的比較,但我不確定我會怎麼做,如果你有任何其他想法或我的代碼的任何改進,請隨時提交您的建議,謝謝。 我還需要一提的是有其實可以在一個文件中兩個相同的氨基酸,所以輸出可以是「ASP MET ASP」
只是爲了澄清列表中的字符串:你爲什麼第一個'MET'配對第一個'ASP'?是用第三列中的匹配值做什麼?即您是否根據第3列中的條目配對第4列值? – DatHydroGuy
@DatHydroGuy這是爲了打印出相關蛋白質的序列。正如你所看到的,第三列是原子的名字,第四列是原子所屬的序列。而一系列的ASP將始終具有這些特定順序的原子。所以這意味着ASP是該鏈序列中的第一個氨基酸,所以它會像ASPMET ...(一些其他氨基酸)。而且由於ASP總是有這8個原子的順序,所以我們不需要打印ASP * 8,而是暗示它。 – GokuBabs