예제 #1
0
def Get_para_fromTOP( coor_file, base_list_1, base_list_2,CALCU="step",PRINT=True):
    '''
    get pair parameters from coor_file
    '''

    atom_list=Simple_atom.Get_atom_list(coor_file)
    residue_list=Simple_atom.Get_Residue_list(atom_list)
    # print residue_list
    # atom_list=Simple_atom.Get_atom_list(coor_file)

    base_name_list_1=list()
    base_name_list_2=list()
    base_atom_list_1=list()
    base_atom_list_2=list()

    for m in base_list_1:
        # for n in residue_list:
        #     if n[1]==m:
        base_name_list_1.append(residue_list[m-1])

    # print base_name_list_1

    for m in base_list_2:
        base_name_list_2.append(residue_list[m-1])

    base_atom_list_1=[DNA_matrix.Get_baseID_list(atom_list,j) for j in base_list_1]
    base_atom_list_2=[DNA_matrix.Get_baseID_list(atom_list,j) for j in base_list_2]

    r1=[]
    '''the group 1 rotate list'''
    r2=[]
    '''the group 2 rotate list'''
    c1=[]
    '''the group 1 coordinate list'''
    c2=[]
    '''the group 2 coordinate list'''
    for m in range(len(base_name_list_1)):
        temp_list = [ [atom_list[x-1].atom_coor_x*10, atom_list[x-1].atom_coor_y*10,atom_list[x-1].atom_coor_z*10] \
                for x in base_atom_list_1[m] ]
#        print temp_list
        result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list), base_name_list_1[m][0])
        r1.append(result[0])
        c1.append(result[1])

    for m in range(len(base_name_list_2)):
        temp_list = [ [atom_list[x-1].atom_coor_x*10, atom_list[x-1].atom_coor_y*10,atom_list[x-1].atom_coor_z*10] \
                for x in base_atom_list_2[m] ]
#        print temp_list
        result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list), base_name_list_2[m][0])
        r2.append(result[0])
        c2.append(result[1])

    if CALCU=="pair":
        a=DNA_param.base_pair_parameters(r1[0],r2[0],c1[0],c2[0])
        if PRINT:
            print "   shear     stretch     stagger      buckle   propeller     opening"
            print "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f" %(a[0],a[1],a[2],a[3],a[4],a[5])
        return a
    else:
        middle_r1,middle_c1=DNA_param.middle_frame(r1[0],r1[1],c1[0],c1[1])
        middle_r2,middle_c2=DNA_param.middle_frame(r2[0],r2[1],c2[0],c2[1])
        a=DNA_param.base_step_parameters(middle_r1,middle_r2,middle_c1,middle_c2)
        if PRINT:
            print "   shift       slide        rise        tilt        roll       twist"
            print "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f" %(a[0],a[1],a[2],a[3],a[4],a[5])
        return a
예제 #2
0
def Get_para_fromTOP(coor_file,
                     base_list_1,
                     base_list_2,
                     CALCU="step",
                     PRINT=True):
    '''
    get pair parameters from coor_file
    '''

    atom_list = Simple_atom.Get_atom_list(coor_file)
    residue_list = Simple_atom.Get_Residue_list(atom_list)
    # print residue_list
    # atom_list=Simple_atom.Get_atom_list(coor_file)

    base_name_list_1 = list()
    base_name_list_2 = list()
    base_atom_list_1 = list()
    base_atom_list_2 = list()

    for m in base_list_1:
        # for n in residue_list:
        #     if n[1]==m:
        base_name_list_1.append(residue_list[m - 1])

    # print base_name_list_1

    for m in base_list_2:
        base_name_list_2.append(residue_list[m - 1])

    base_atom_list_1 = [
        DNA_matrix.Get_baseID_list(atom_list, j) for j in base_list_1
    ]
    base_atom_list_2 = [
        DNA_matrix.Get_baseID_list(atom_list, j) for j in base_list_2
    ]

    r1 = []
    '''the group 1 rotate list'''
    r2 = []
    '''the group 2 rotate list'''
    c1 = []
    '''the group 1 coordinate list'''
    c2 = []
    '''the group 2 coordinate list'''
    for m in range(len(base_name_list_1)):
        temp_list = [ [atom_list[x-1].atom_coor_x*10, atom_list[x-1].atom_coor_y*10,atom_list[x-1].atom_coor_z*10] \
                for x in base_atom_list_1[m] ]
        #        print temp_list
        result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list),
                                              base_name_list_1[m][0])
        r1.append(result[0])
        c1.append(result[1])

    for m in range(len(base_name_list_2)):
        temp_list = [ [atom_list[x-1].atom_coor_x*10, atom_list[x-1].atom_coor_y*10,atom_list[x-1].atom_coor_z*10] \
                for x in base_atom_list_2[m] ]
        #        print temp_list
        result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list),
                                              base_name_list_2[m][0])
        r2.append(result[0])
        c2.append(result[1])

    if CALCU == "pair":
        a = DNA_param.base_pair_parameters(r1[0], r2[0], c1[0], c2[0])
        if PRINT:
            print "   shear     stretch     stagger      buckle   propeller     opening"
            print "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f" % (
                a[0], a[1], a[2], a[3], a[4], a[5])
        return a
    else:
        middle_r1, middle_c1 = DNA_param.middle_frame(r1[0], r1[1], c1[0],
                                                      c1[1])
        middle_r2, middle_c2 = DNA_param.middle_frame(r2[0], r2[1], c2[0],
                                                      c2[1])
        a = DNA_param.base_step_parameters(middle_r1, middle_r2, middle_c1,
                                           middle_c2)
        if PRINT:
            print "   shift       slide        rise        tilt        roll       twist"
            print "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f" % (
                a[0], a[1], a[2], a[3], a[4], a[5])
        return a
예제 #3
0
                    temp_list = [ [ts._x[x-1], ts._y[x-1], ts._z[x-1]] for x in base_atom_list_1[i][m] ]
                    result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list), base_name_list_1[i][m][0])
                    #base_name_list_1[index of the groups][index of the base of group 1][base_name,base_serial]
                    r1.append(result[0])
                    c1.append(result[1])

                for m in range(len(base_name_list_2[i])):
                    temp_list = [ [ts._x[x-1], ts._y[x-1], ts._z[x-1]] for x in base_atom_list_2[i][m] ]
                    result = DNA_matrix.Get_rotate_matrix(numpy.array(temp_list), base_name_list_2[i][m][0])
                    r2.append(result[0])
                    c2.append(result[1])

                fp = open(output_name[i], 'a')

                if CALCU=="pair":
                    a=DNA_param.base_pair_parameters(r1[0],r2[0],c1[0],c2[0])
                    fp.write("%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f\n" %(a[0],a[1],a[2],a[3],a[4],a[5]))
                else:
                    middle_r1,middle_c1=DNA_param.middle_frame(r1[0],r1[1],c1[0],c1[1])
                    middle_r2,middle_c2=DNA_param.middle_frame(r2[0],r2[1],c2[0],c2[1])
                    a=DNA_param.base_step_parameters(middle_r1,middle_r2,middle_c1,middle_c2)
                    fp.write("%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f\n" %(a[0],a[1],a[2],a[3],a[4],a[5]))

                if ts.frame % 10 ==0 and i==0:
                    NOW_TIME=Time.time()
                    usage.echo("  analysis frame %6d, time %8.1f ps, time used %8.2f s\r" %(ts.frame, time,NOW_TIME-START_TIME))

                fp.close()

    print "The DNA helical analysis finished"
    print "The result are in file: %s" %output_name
예제 #4
0
                    #base_name_list_1[index of the groups][index of the base of group 1][base_name,base_serial]
                    r1.append(result[0])
                    c1.append(result[1])

                for m in range(len(base_name_list_2[i])):
                    temp_list = [[ts._x[x - 1], ts._y[x - 1], ts._z[x - 1]]
                                 for x in base_atom_list_2[i][m]]
                    result = DNA_matrix.Get_rotate_matrix(
                        numpy.array(temp_list), base_name_list_2[i][m][0])
                    r2.append(result[0])
                    c2.append(result[1])

                fp = open(output_name[i], 'a')

                if CALCU == "pair":
                    a = DNA_param.base_pair_parameters(r1[0], r2[0], c1[0],
                                                       c2[0])
                    fp.write(
                        "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f\n"
                        % (a[0], a[1], a[2], a[3], a[4], a[5]))
                else:
                    middle_r1, middle_c1 = DNA_param.middle_frame(
                        r1[0], r1[1], c1[0], c1[1])
                    middle_r2, middle_c2 = DNA_param.middle_frame(
                        r2[0], r2[1], c2[0], c2[1])
                    a = DNA_param.base_step_parameters(middle_r1, middle_r2,
                                                       middle_c1, middle_c2)
                    fp.write(
                        "%8.2f    %8.2f    %8.2f    %8.2f    %8.2f    %8.2f\n"
                        % (a[0], a[1], a[2], a[3], a[4], a[5]))

                if ts.frame % 10 == 0 and i == 0: