def set_arists_on_nodes(self): for n in range(self.count_nodes()): c = self.get_node_by_ndx(n) # Acceptor for t in range(self.count_nodes()): if t == n: continue cc = self.get_node_by_ndx(t) # Donor if cc.name.find('PRO') == 0: continue ch = 1. / mymath.distance( cc.coord[1], c.coord[3]) # H from donor to C from aceptor cn = 1. / mymath.distance( cc.coord[0], c.coord[3]) # N from donor to C from aceptor oh = 1. / mymath.distance( cc.coord[1], c.coord[4]) # H from donor to O from aceptor on = 1. / mymath.distance( cc.coord[0], c.coord[4]) # N from donor to O from aceptor const = 27.888 # 0.084 from two charges times 332 kcal/mol. DSSP definition. energy = const * (on + ch - oh - cn) n2o = c.coord[4] - cc.coord[0] n2h = cc.coord[1] - cc.coord[0] ang = mymath.angle(n2o, n2h) * 180. / np.pi #if c.name == "ASP_85_A" and cc.name == "GLN_88_A" : # print c.name,cc.name," ",energy," ",ang #if energy < -0.5 and ang < 63 and 1./on < 4.0: if ang <= 30 and 1. / on < 3.5: cc_name = str(n) + "_" + str( t) # Accepted from Donor, A[n,t]. cc.conne[str(n)] = energy #print c.name,cc.name," ",energy," ",ang self.add_arist(Arist(cc_name, energy))
def get_df_distancias(ref): """Funcion para obtener los enlaces de distancias de cada residuo Dudas en codigo pueden revisar fc.distancia_entre_atomos en ese se basa esta funcion, la diferencia es que se crea con el objeto residuo""" # se generan listas con coordenadas y numero de atomo enlaces = [ [res1.resi, res2.resi] for res1 in ref[1:-1] for res2 in ref[1:-1] if res2.resi >= res1.resi if mymath.distance(res2.GetAtom('CA').coord, res1.GetAtom('CA').coord) < 10 ] return enlaces
def compute_distance(ref, tar, atom_name): plot_data = [] for i in range(len(tar)): # same size tar_res = tar[i] ref_res = ref[i] #print ref_res.CA.coord plot_data.append( Resi_plot( tar_res.resi, tar_res.resn, vcts.distance( getattr(ref_res, atom_name).coord, getattr(tar_res, atom_name).coord))) return plot_data
def get_df_distancias(ref): """Funcion para obtener los enlaces de distancias de cada residuo Dudas en codigo pueden revisar fc.distancia_entre_atomos en ese se basa esta funcion, la diferencia es que se crea con el objeto residuo""" # se generan listas con coordenadas y numero de atomo # calcula distancia y regresa dataframe enlaces = [] for res1 in ref[1:-1]: for res2 in ref[1:-1]: if res2.resi >= res1.resi: if mymath.distance(res2.center_mass, res1.center_mass) < 10: enlaces.append([res1.resi, res2.resi]) # se genera la matriz de adyacencias para la red return enlaces