list_of_coordinates = []
i = 0
while i < len(list_of_structures):
for models in list_of_structures:
for model in models:
chains = model.get_chains()
for chain in chains:
residues = chain.get_residues()
for residue in residues:
atoms = residue.get_atoms()
for atom in atoms:
atom_name = atom.get_name()
print(atom_name)
if atom_name == "CA":
CA_coord = atom.get_coord()
list_of_coordinates.append(CA_coord)
i += 1
v = np.array(list_of_coordinates)
f = open("test.txt","w")
f.write(str(v))
f.close()
print(type(list_of_coordinates))
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(v[:,0],v[:,1],v[:,2],c="r")
plt.show()
What I do is find the coordinates of these particular files in this loop and save them to a list then it graphs all of them, is there a better way to do this so that I can make a new file for each of them to save as well as seeing all of them in the scatter plot but maybe in differing colors? Thanks!
Sorry about not being able to make scrollable windows smaller for my 4 input pdbs
ok my 4 short pdbs:
prova_1.pdb
:
<!-- begin snippet: js hide: true -->
ATOM 1 N ALA A 1 1.142 129.955 31.316 1.00 56.83 N
ATOM 2 CA ALA A 1 2.084 128.961 31.798 1.00 53.73 C
ATOM 3 C ALA A 1 1.743 127.771 30.885 1.00 51.56 C
ATOM 4 O ALA A 1 0.650 127.715 30.320 1.00 57.57 O
ATOM 5 CB ALA A 1 1.831 128.558 33.261 1.00 52.29 C
ATOM 6 N SER A 2 2.806 127.064 30.572 1.00 41.24 N
ATOM 7 CA SER A 2 2.887 125.804 29.847 1.00 30.35 C
ATOM 8 C SER A 2 4.352 125.681 30.149 1.00 25.48 C
ATOM 9 O SER A 2 5.074 126.672 29.968 1.00 26.70 O
ATOM 10 CB SER A 2 2.663 125.911 28.338 1.00 29.47 C
ATOM 11 OG SER A 2 3.604 125.369 27.417 1.00 27.34 O
ATOM 12 N ASN A 3 4.844 124.603 30.720 1.00 17.84 N
ATOM 13 CA ASN A 3 6.248 124.631 31.023 1.00 11.19 C
ATOM 14 C ASN A 3 6.959 124.045 29.845 1.00 12.66 C
ATOM 15 O ASN A 3 8.170 123.897 29.905 1.00 13.73 O
ATOM 16 CB ASN A 3 6.501 123.860 32.290 1.00 10.22 C
ATOM 17 CG ASN A 3 5.985 122.446 32.339 1.00 12.32 C
ATOM 18 OD1 ASN A 3 5.592 121.848 31.329 1.00 14.90 O
ATOM 19 ND2 ASN A 3 5.947 121.897 33.544 1.00 13.65 N
ATOM 20 N PHE A 4 6.300 123.727 28.742 1.00 10.37 N
ATOM 21 CA PHE A 4 7.002 123.152 27.631 1.00 7.74 C
ATOM 22 C PHE A 4 7.609 124.278 26.791 1.00 10.17 C
ATOM 23 O PHE A 4 7.070 124.663 25.739 1.00 13.33 O
ATOM 24 CB PHE A 4 6.016 122.339 26.846 1.00 3.48 C
ATOM 25 CG PHE A 4 6.675 121.292 25.996 1.00 2.00 C
ATOM 26 CD1 PHE A 4 8.050 121.171 25.900 1.00 3.04 C
ATOM 27 CD2 PHE A 4 5.871 120.419 25.326 1.00 2.88 C
ATOM 28 CE1 PHE A 4 8.600 120.173 25.132 1.00 7.56 C
ATOM 29 CE2 PHE A 4 6.433 119.413 24.560 1.00 5.85 C
ATOM 30 CZ PHE A 4 7.794 119.276 24.451 1.00 6.77 C
ATOM 31 N THR A 5 8.689 124.868 27.263 1.00 13.06 N
ATOM 32 CA THR A 5 9.399 125.914 26.575 1.00 14.10 C
ATOM 33 C THR A 5 10.827 125.601 26.227 1.00 14.87 C
ATOM 34 O THR A 5 11.407 124.627 26.688 1.00 19.07 O
ATOM 35 CB THR A 5 9.385 127.148 27.412 1.00 15.81 C
ATOM 36 OG1 THR A 5 9.866 126.836 28.721 1.00 22.56 O
ATOM 37 CG2 THR A 5 7.973 127.704 27.421 1.00 21.49 C
ATOM 38 N GLN A 6 11.427 126.455 25.419 1.00 16.45 N
ATOM 39 CA GLN A 6 12.807 126.328 24.979 1.00 13.21 C
ATOM 40 C GLN A 6 13.708 126.721 26.125 1.00 9.91 C
ATOM 41 O GLN A 6 13.263 127.501 26.962 1.00 12.35 O
ATOM 42 CB GLN A 6 12.909 127.234 23.821 1.00 16.85 C
ATOM 43 CG GLN A 6 14.074 128.176 23.710 1.00 32.72 C
ATOM 44 CD GLN A 6 13.915 128.964 22.425 1.00 40.53 C
ATOM 45 OE1 GLN A 6 13.071 129.853 22.332 1.00 50.30 O
ATOM 46 NE2 GLN A 6 14.649 128.668 21.360 1.00 47.53 N
prova_2.pdb
:
ATOM 20 N PHE A 4 6.300 123.727 28.742 1.00 10.37 N
ATOM 21 CA PHE A 4 7.002 123.152 27.631 1.00 7.74 C
ATOM 22 C PHE A 4 7.609 124.278 26.791 1.00 10.17 C
ATOM 23 O PHE A 4 7.070 124.663 25.739 1.00 13.33 O
ATOM 24 CB PHE A 4 6.016 122.339 26.846 1.00 3.48 C
ATOM 25 CG PHE A 4 6.675 121.292 25.996 1.00 2.00 C
ATOM 26 CD1 PHE A 4 8.050 121.171 25.900 1.00 3.04 C
ATOM 27 CD2 PHE A 4 5.871 120.419 25.326 1.00 2.88 C
ATOM 28 CE1 PHE A 4 8.600 120.173 25.132 1.00 7.56 C
ATOM 29 CE2 PHE A 4 6.433 119.413 24.560 1.00 5.85 C
ATOM 30 CZ PHE A 4 7.794 119.276 24.451 1.00 6.77 C
ATOM 31 N THR A 5 8.689 124.868 27.263 1.00 13.06 N
ATOM 32 CA THR A 5 9.399 125.914 26.575 1.00 14.10 C
ATOM 33 C THR A 5 10.827 125.601 26.227 1.00 14.87 C
ATOM 34 O THR A 5 11.407 124.627 26.688 1.00 19.07 O
ATOM 35 CB THR A 5 9.385 127.148 27.412 1.00 15.81 C
ATOM 36 OG1 THR A 5 9.866 126.836 28.721 1.00 22.56 O
ATOM 37 CG2 THR A 5 7.973 127.704 27.421 1.00 21.49 C
ATOM 38 N GLN A 6 11.427 126.455 25.419 1.00 16.45 N
ATOM 39 CA GLN A 6 12.807 126.328 24.979 1.00 13.21 C
ATOM 40 C GLN A 6 13.708 126.721 26.125 1.00 9.91 C
ATOM 41 O GLN A 6 13.263 127.501 26.962 1.00 12.35 O
ATOM 42 CB GLN A 6 12.909 127.234 23.821 1.00 16.85 C
ATOM 43 CG GLN A 6 14.074 128.176 23.710 1.00 32.72 C
ATOM 44 CD GLN A 6 13.915 128.964 22.425 1.00 40.53 C
ATOM 45 OE1 GLN A 6 13.071 129.853 22.332 1.00 50.30 O
ATOM 46 NE2 GLN A 6 14.649 128.668 21.360 1.00 47.53 N
ATOM 47 N PHE A 7 14.919 126.202 26.225 1.00 5.73 N
ATOM 48 CA PHE A 7 15.810 126.623 27.269 1.00 3.86 C
ATOM 49 C PHE A 7 17.240 126.457 26.803 1.00 6.24 C
ATOM 50 O PHE A 7 17.478 125.796 25.772 1.00 5.25 O
ATOM 51 CB PHE A 7 15.604 125.811 28.542 1.00 5.26 C
ATOM 52 CG PHE A 7 15.786 124.310 28.465 1.00 4.68 C
ATOM 53 CD1 PHE A 7 14.771 123.513 27.996 1.00 3.85 C
ATOM 54 CD2 PHE A 7 16.956 123.734 28.906 1.00 5.00 C
ATOM 55 CE1 PHE A 7 14.937 122.144 27.986 1.00 4.19 C
ATOM 56 CE2 PHE A 7 17.100 122.356 28.883 1.00 4.10 C
ATOM 57 CZ PHE A 7 16.096 121.548 28.426 1.00 2.00 C
ATOM 58 N VAL A 8 18.223 127.039 27.507 1.00 3.69 N
ATOM 59 CA VAL A 8 19.557 126.886 26.986 1.00 5.87 C
ATOM 60 C VAL A 8 20.166 125.775 27.807 1.00 5.50 C
ATOM 61 O VAL A 8 20.120 125.788 29.027 1.00 7.32 O
ATOM 62 CB VAL A 8 20.422 128.260 27.014 1.00 2.82 C
ATOM 63 CG1 VAL A 8 19.663 129.298 27.677 1.00 2.00 C
ATOM 64 CG2 VAL A 8 21.770 128.137 27.715 1.00 3.72 C
prova_3.pdb
:
ATOM 73 N VAL A 10 23.392 124.455 27.156 1.00 5.70 N
ATOM 74 CA VAL A 10 24.815 124.609 27.396 1.00 5.41 C
ATOM 75 C VAL A 10 25.028 126.086 27.368 1.00 9.58 C
ATOM 76 O VAL A 10 24.818 126.713 26.326 1.00 9.54 O
ATOM 77 CB VAL A 10 25.628 123.971 26.302 1.00 2.00 C
ATOM 78 CG1 VAL A 10 27.079 124.222 26.538 1.00 2.00 C
ATOM 79 CG2 VAL A 10 25.376 122.481 26.258 1.00 2.00 C
ATOM 80 N ASP A 11 25.389 126.678 28.476 1.00 15.18 N
ATOM 81 CA ASP A 11 25.625 128.089 28.463 1.00 24.10 C
ATOM 82 C ASP A 11 27.083 128.378 28.236 1.00 30.71 C
ATOM 83 O ASP A 11 27.898 128.328 29.144 1.00 32.07 O
ATOM 84 CB ASP A 11 25.172 128.683 29.773 1.00 30.45 C
ATOM 85 CG ASP A 11 25.315 130.192 29.952 1.00 37.30 C
ATOM 86 OD1 ASP A 11 25.407 130.948 28.981 1.00 45.67 O
ATOM 87 OD2 ASP A 11 25.313 130.633 31.097 1.00 44.21 O
ATOM 88 N ASN A 12 27.436 128.753 27.011 1.00 39.07 N
ATOM 89 CA ASN A 12 28.802 129.152 26.729 1.00 45.49 C
ATOM 90 C ASN A 12 28.900 130.664 26.783 1.00 48.93 C
ATOM 91 O ASN A 12 29.429 131.343 25.917 1.00 49.83 O
ATOM 92 CB ASN A 12 29.205 128.648 25.361 1.00 46.75 C
ATOM 93 CG ASN A 12 29.704 127.218 25.445 1.00 52.76 C
ATOM 94 OD1 ASN A 12 30.437 126.808 26.353 1.00 54.40 O
ATOM 95 ND2 ASN A 12 29.301 126.405 24.473 1.00 53.69 N
ATOM 96 N GLY A 13 28.311 131.227 27.831 1.00 52.11 N
ATOM 97 CA GLY A 13 28.324 132.661 28.085 1.00 59.39 C
ATOM 98 C GLY A 13 27.829 133.558 26.960 1.00 63.90 C
ATOM 99 O GLY A 13 28.566 134.446 26.526 1.00 66.52 O
ATOM 100 N GLY A 14 26.592 133.376 26.480 1.00 66.67 N
ATOM 101 CA GLY A 14 26.057 134.186 25.374 1.00 68.42 C
ATOM 102 C GLY A 14 26.542 133.759 23.967 1.00 70.75 C
ATOM 103 O GLY A 14 25.755 133.710 23.007 1.00 70.95 O
ATOM 104 N THR A 15 27.806 133.373 23.782 1.00 71.35 N
ATOM 105 CA THR A 15 28.357 133.033 22.479 1.00 73.39 C
ATOM 106 C THR A 15 28.563 131.530 22.201 1.00 70.75 C
ATOM 107 O THR A 15 29.560 130.900 22.623 1.00 71.27 O
ATOM 108 CB THR A 15 29.681 133.863 22.345 1.00 77.53 C
ATOM 109 OG1 THR A 15 30.518 133.626 23.492 1.00 80.95 O
ATOM 110 CG2 THR A 15 29.362 135.367 22.204 1.00 79.90 C
ATOM 111 N GLY A 16 27.650 130.909 21.451 1.00 64.68 N
ATOM 112 CA GLY A 16 27.780 129.467 21.198 1.00 55.83 C
ATOM 113 C GLY A 16 27.063 128.651 22.265 1.00 47.59 C
ATOM 114 O GLY A 16 27.463 127.543 22.627 1.00 46.78 O
prova_4.pdb
:
ATOM 1 N PHE A 4 8.005 121.707 30.748 1.00 10.37 N
ATOM 2 CA PHE A 4 8.609 121.187 29.556 1.00 7.74 C
ATOM 3 C PHE A 4 9.157 122.352 28.728 1.00 10.17 C
ATOM 4 O PHE A 4 8.537 122.794 27.744 1.00 13.33 O
ATOM 5 CB PHE A 4 7.556 120.420 28.814 1.00 3.48 C
ATOM 6 CG PHE A 4 8.135 119.416 27.860 1.00 2.00 C
ATOM 7 CD1 PHE A 4 9.496 119.294 27.647 1.00 3.04 C
ATOM 8 CD2 PHE A 4 7.272 118.583 27.214 1.00 2.88 C
ATOM 9 CE1 PHE A 4 9.974 118.334 26.787 1.00 7.56 C
ATOM 10 CE2 PHE A 4 7.761 117.615 26.355 1.00 5.85 C
ATOM 11 CZ PHE A 4 9.107 117.477 26.128 1.00 6.77 C
ATOM 12 N THR A 5 10.276 122.912 29.140 1.00 13.06 N
ATOM 13 CA THR A 5 10.937 123.990 28.452 1.00 14.10 C
ATOM 14 C THR A 5 12.329 123.688 27.973 1.00 14.87 C
ATOM 15 O THR A 5 12.936 122.690 28.335 1.00 19.07 O
ATOM 16 CB THR A 5 11.001 125.178 29.348 1.00 15.81 C
ATOM 17 CG2 THR A 5 9.600 125.740 29.502 1.00 21.49 C
ATOM 18 OG1 THR A 5 11.584 124.797 30.597 1.00 22.56 O
ATOM 19 N GLN A 6 12.870 124.580 27.164 1.00 16.45 N
ATOM 20 CA GLN A 6 14.208 124.470 26.607 1.00 13.21 C
ATOM 21 C GLN A 6 15.202 124.799 27.694 1.00 9.91 C
ATOM 22 O GLN A 6 14.833 125.537 28.604 1.00 12.35 O
ATOM 23 CB GLN A 6 14.224 125.434 25.493 1.00 16.85 C
ATOM 24 CG GLN A 6 15.384 126.376 25.335 1.00 32.72 C
ATOM 25 CD GLN A 6 15.129 127.229 24.110 1.00 40.53 C
ATOM 26 NE2 GLN A 6 15.771 126.986 22.975 1.00 47.53 N
ATOM 27 OE1 GLN A 6 14.288 128.126 24.131 1.00 50.30 O
ATOM 28 N PHE A 7 16.413 124.270 27.669 1.00 5.73 N
ATOM 29 CA PHE A 7 17.389 124.633 28.657 1.00 3.86 C
ATOM 30 C PHE A 7 18.775 124.484 28.068 1.00 6.24 C
ATOM 31 O PHE A 7 18.923 123.876 26.988 1.00 5.25 O
ATOM 32 CB PHE A 7 17.280 123.757 29.900 1.00 5.26 C
ATOM 33 CG PHE A 7 17.442 122.261 29.731 1.00 4.68 C
ATOM 34 CD1 PHE A 7 16.386 121.493 29.306 1.00 3.85 C
ATOM 35 CD2 PHE A 7 18.639 121.658 30.045 1.00 5.00 C
ATOM 36 CE1 PHE A 7 16.538 120.126 29.213 1.00 4.19 C
ATOM 37 CE2 PHE A 7 18.768 120.282 29.940 1.00 4.10 C
ATOM 38 CZ PHE A 7 17.723 119.503 29.525 1.00 2.00 C
ATOM 39 N VAL A 8 19.818 125.025 28.719 1.00 3.69 N
ATOM 40 CA VAL A 8 21.103 124.892 28.084 1.00 5.87 C
ATOM 41 C VAL A 8 21.767 123.739 28.795 1.00 5.50 C
ATOM 42 O VAL A 8 21.820 123.688 30.013 1.00 7.32 O
ATOM 43 CB VAL A 8 21.980 126.259 28.112 1.00 2.82 C
ATOM 44 CG1 VAL A 8 21.285 127.265 28.886 1.00 2.00 C
ATOM 45 CG2 VAL A 8 23.379 126.094 28.694 1.00 3.72 C
TER
END
my code :
import matplotlib.pyplot as plt
from itertools import cycle
prop_cycle = plt.rcParams['axes.prop_cycle']
colors = cycle(prop_cycle.by_key()['color'])
from Bio.PDB import PDBParser
list_of_structures = []
parser = PDBParser(PERMISSIVE=1, QUIET=1)
list_of_structures.extend([parser.get_structure("prova_1", "prova_1.pdb") ,
parser.get_structure("prova_2", "prova_2.pdb"),
parser.get_structure("prova_3", "prova_3.pdb"),
parser.get_structure("prova_3", "prova_4.pdb")])
print(list_of_structures)
list_of_struct = []
colorz = 'red'
i = 1
while i < len(list_of_structures):
for models in list_of_structures:
list_of_coordinates = []
for model in models:
#print(model)
chains = model.get_chains()
for chain in chains:
#print(chain)
residues = chain.get_residues()
for residue in residues:
#print(residue)
atoms = residue.get_atoms()
for atom in atoms:
atom_name = atom.get_name()
#print(atom_name)
if atom_name == "CA":
CA_coord = atom.get_coord()
#print(CA_coord)
list_of_coordinates.append([i for i in CA_coord])
i += 1
list_of_struct.append(list_of_coordinates)
for i in list_of_struct:
print(i)
f = open("test.txt","w")
f.write(str(list_of_struct))
f.close()
print(type(list_of_struct))
atomlist_full = list_of_struct
fig = plt.figure()
ax = plt.axes(projection="3d")
for i in range(len(list_of_struct)):
atomlist = atomlist_full[i]
for p in atomlist: #print CA as dots
ax.scatter3D(p[0], p[1], p[2], color = colorz)
print(p)
for i in range(0,len(atomlist)-1): #connect with a line CA n with n+1
x,y,z = [atomlist[i+1][0],atomlist[i][0]],[atomlist[i+1][1],atomlist[i][1]],[atomlist[i+1][2],atomlist[i][2]]
ax.plot(x,y,z, color = colorz)
colorz = next(colors)
plt.show()
output :
[[[2.084, 128.961, 31.798], [2.887, 125.804, 29.847], [6.248, 124.631, 31.023], [7.002, 123.152, 27.631], [9.399, 125.914, 26.575], [12.807, 126.328, 24.979]], [[7.002, 123.152, 27.631], [9.399, 125.914, 26.575], [12.807, 126.328, 24.979], [15.81, 126.623, 27.269], [19.557, 126.886, 26.986]], [[24.815, 124.609, 27.396], [25.625, 128.089, 28.463], [28.802, 129.152, 26.729], [28.324, 132.661, 28.085], [26.057, 134.186, 25.374], [28.357, 133.033, 22.479], [27.78, 129.467, 21.198]], [[8.609, 121.187, 29.556], [10.937, 123.99, 28.452], [14.208, 124.47, 26.607], [17.389, 124.633, 28.657], [21.103, 124.892, 28.084]]]
image of plot :
every different color line is a c-alpha of from one of the pdbs
Can change block after end of main loop with
for i in range(len(list_of_struct)):
print(list_of_structures[i])
f = open(list_of_structures[i].id+'_'+str(i)+'_'+'.txt',"w")
f.write(str(list_of_struct[i]))
f.close()
print(type(list_of_struct))
to save each pdb coordinates in a single text file named with structure id such as prova_1_0_.txt
for first pdb