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
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
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
#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: