2D数组比较和输出文件问题| python

问题描述 投票:0回答:1

我正在尝试比较两个不同的不相等的2D数组,Array1:(RNA序列)[63:3]

AAA
AAC
AGC
UAC

Array2:RNA_coordinate_source_file [128:11]

ATOM    142 H1' A   5   -1.227  8.932   12.229  1.00    0.00    H
ATOM    142 H1' A   5   -1.227  8.932   12.229  1.00    0.00    H
ATOM    142 H1' G   5   -1.227  8.932   12.229  1.00    0.00    H
ATOM    143 N1  G   5   -0.447  7.106   12.630  1.00    0.00    N
ATOM    143 N1  G   5   -0.447  7.106   12.630  1.00    0.00    N
ATOM    143 N1  C   5   -0.447  7.106   12.630  1.00    0.00    N
ATOM    142 H1' C   5   -1.227  8.932   12.229  1.00    0.00    H
ATOM    143 N1  G   5   -0.447  7.106   12.630  1.00    0.00    N
ATOM    143 N1  G   5   -0.447  7.106   12.630  1.00    0.00    N
ATOM    143 N1  C   5   -0.447  7.106   12.630  1.00    0.00    N

我想写一个新文件,当RNA序列(array1)是三元组,并且一个新文件的名称如AAG.pdb,并且所有具有第4列的行对应于AAG坐标。] >

输出文件应从array2中提取所有行,然后文件将具有“ A”的所有坐标,然后具有A和G的所有坐标,就像所有三元组,单独的文件和单独的名称一样。

我发现无法比较不相等的数组,并且我的以下代码不起作用,我需要帮助谢谢

import re
with open("drive/My Drive/RES/dimeric_force_field/Test/python_read/cropped.pdb", "r") as file:
            arr = [ re.split("[ \t\r\n]+", line)[:-1] for line in file ]
            #re.split("[ \t\r\n]+", line)[:-1]

          #print ("pdb file as array=",arr)
          #print("lenght=",len(arr))

fw = open("drive/My Drive/Colab Notebooks/pdb_out.pdb", "w")

myArray = ["A", "C", "G", "U"]
triplet = []
for a1 in myArray:
  for a2 in myArray:
    for a3 in myArray:
      triplet.append(a1+a2+a3)

print("triplets=",triplet)
print("triplet array length=",len(triplet))
print("arr=",arr)
print("triplet array length=",len(arr))

i = 64
while i < len(triplet):
      s1 = triplet[i][0] #U
      s2 = triplet[i][1] #U
      s3 = triplet[i][2] #G
      #print (srt(i)+' '+s1+' '+s2+' '+s3)
      #print (s1+' '+s2+' '+s

      j= 0      
      while j < (len(arr)-1):
            el1 = arr[j][0] # line_def
            el2 = arr[j][1] # atom_no
            el3 = arr[j][2] # atom_name
            el4 = arr[j][3] # residue_name
            el5 = arr[j][4] # residure_no
            el6 = arr[j][5] # x
            el7 = arr[j][6] # y
            el8 = arr[j][7] # z
            el9 = arr[j][8] #
            el10 = arr[j][9] #
            el11 = arr[j][10] #
            #print (str(j)+'\t'+el1+'\t'+el2+'\t'+el3+'\t'+el4+'\t'+el5+'\t'+el6+'\t'+el7+'\t'+el8+'\t'+el9+'\t'+el10+'\t'+el11)
            #print (str(j)+'\t'+line_def+'\t'+atom_no+'\t'+atom_name+'\t'+residue_name+'\t'+residure_no+'\t'+x+'\t'+y+'\t'+z+'\t'+el9+'\t'+el10+'\t'+el11)

            if s1==el4:
                #print(str(i)+" "+str(j)+" "+"slected=","\t".join(arr[j]))
                print("\t".join(arr[j]))
                fw.write(str(i)+ "    "+ str(j) +  "\t".join(arr[j])+'\n')

            if s2==el4:
                #print(str(i)+" "+str(j)+" "+"slected=","\t".join(arr[j]))
                print("\t".join(arr[j]))
                fw.write(str(i)+"    " + str(j) +  "\t".join(arr[j])+'\n')

            if s3==el4:
                #a= print(str(i)+" "+str(j)+" "+"slected=","\t".join(arr[j]))
                print("\t".join(arr[j]))
                fw.write(str(i) +"    "+ str(j) + "\t".join(arr[j])+'\n')

            #fw.write("\t".join(arr[j])
            #fw.write(p2)
            #fw.write(p3)
            j+=1
      i+=1

fw.write("TER")
fw.close()

fr=open("drive/My Drive/Colab Notebooks/pdb_out.pdb", "r")
print(fr.read())

[我正在尝试比较两个不同的不相等2D数组Array1:(RNA序列)[63:3] AAA AAC AGC UAC Array2:RNA_coordinate_source_file [128:11] ATOM 142 H1'A 5 -1.227 8.932 12.229 .. 。

python-3.x
1个回答
0
投票

此代码有效,

© www.soinside.com 2019 - 2024. All rights reserved.