예제 #1
0
    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))
예제 #2
0
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
예제 #3
0
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