| import numpy as np |
|
|
| from itertools import permutations |
|
|
| import MDAnalysis as mda |
| |
| from MDAnalysis.analysis import distances |
|
|
|
|
| def obtain_self_dist(res): |
| try: |
| |
| xx = res.atoms |
| dists = distances.self_distance_array(xx.positions) |
| ca = xx.select_atoms("name CA") |
| c = xx.select_atoms("name C") |
| n = xx.select_atoms("name N") |
| o = xx.select_atoms("name O") |
| return [dists.max()*0.1, dists.min()*0.1, distances.dist(ca,o)[-1][0]*0.1, distances.dist(o,n)[-1][0]*0.1, distances.dist(n,c)[-1][0]*0.1] |
| except: |
| return [0, 0, 0, 0, 0] |
|
|
|
|
| def obtain_dihediral_angles(res): |
| try: |
| if res.phi_selection() is not None: |
| phi = res.phi_selection().dihedral.value() |
| else: |
| phi = 0 |
| if res.psi_selection() is not None: |
| psi = res.psi_selection().dihedral.value() |
| else: |
| psi = 0 |
| if res.omega_selection() is not None: |
| omega = res.omega_selection().dihedral.value() |
| else: |
| omega = 0 |
| if res.chi1_selection() is not None: |
| chi1 = res.chi1_selection().dihedral.value() |
| else: |
| chi1 = 0 |
| return [phi*0.01, psi*0.01, omega*0.01, chi1*0.01] |
| except: |
| return [0, 0, 0, 0] |
| |
|
|
| def obatin_edge(u, cutoff=10.0): |
| edgeids = [] |
| dismin = [] |
| dismax = [] |
| for res1, res2 in permutations(u.residues, 2): |
| dist = calc_dist(res1, res2) |
| if dist.min() <= cutoff: |
| edgeids.append([res1.ix, res2.ix]) |
| dismin.append(dist.min()*0.1) |
| dismax.append(dist.max()*0.1) |
| return edgeids, np.array([dismin, dismax]).T |
|
|
|
|
|
|
| def check_connect(u, i, j): |
| if abs(i-j) != 1: |
| return 0 |
| else: |
| if i > j: |
| i = j |
| nb1 = len(u.residues[i].get_connections("bonds")) |
| nb2 = len(u.residues[i+1].get_connections("bonds")) |
| nb3 = len(u.residues[i:i+2].get_connections("bonds")) |
| if nb1 + nb2 == nb3 + 1: |
| return 1 |
| else: |
| return 0 |
| |
| |
|
|
| def calc_dist(res1, res2): |
| |
| |
| |
| dist_array = distances.distance_array(res1.atoms.positions,res2.atoms.positions) |
| return dist_array |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|