Search code examples
pythonlistnumpybiopythonwritefile

Is there a good way to save these as their own files during this loop and then to plot them in different colors?


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!


Solution

  • 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 :

    enter image description here

    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