curseur.execute("SELECT chain_id, nt_name, alpha, beta, gamma, delta, epsilon, zeta, chi FROM nucleotide WHERE nt_name='A' OR nt_name='C' OR nt_name='G' OR nt_name='U' ;")
liste=[]
forntincurseur.fetchall():# retrieve the angle measurements and put them in a list
liste.append(nt)
angles_torsion=[]
forntinliste:
angles_deg=[]
angles_deg.append(nt[0])#chain_id
angles_deg.append(nt[1])#nt_name
foriinrange(2,9):# on all angles
angle=0
ifnt[i]==None:
angle=None
elifnt[i]<=np.pi:#if angle value <pi, positive
angle=(180/np.pi)*nt[i]
elifnp.pi<nt[i]<=2*np.pi:#if value of the angle between pi and 2pi, negative
angle=((180/np.pi)*nt[i])-360
else:
angle=nt[i]# dans le cas ou certains angles seraient en degres -> supprimer?
angles_deg.append(angle)
angles_torsion.append(angles_deg)
returnangles_torsion
defconversion_eta_theta(bdd):
'''
We repeat the operation for the pseudotorsion angles
curseur.execute("SELECT chain_id, nt_name, eta, theta, eta_prime, theta_prime, eta_base, theta_base FROM nucleotide WHERE nt_name='A' OR nt_name='C' OR nt_name='G' OR nt_name='U';")
liste=[]
forntincurseur.fetchall():
liste.append(nt)
angles_virtuels=[]
forntinliste:
angles_deg=[]
angles_deg.append(nt[0])#chain_id
angles_deg.append(nt[1])#nt_name
foriinrange(2,8):
angle=0
ifnt[i]==None:
angle=None
elifnt[i]<=np.pi:
angle=(180/np.pi)*nt[i]
elifnp.pi<nt[i]<=2*np.pi:
angle=((180/np.pi)*nt[i])-360
else:
angle=nt[i]
angles_deg.append(angle)
angles_virtuels.append(angles_deg)
returnangles_virtuels
defangles_torsion_hire_RNA(f):
'''
Measures the torsion angles between the atoms of the HiRE-RNA model