python小白首次接触计算化学项目,目前着手做B56坐标中50个替换成C原子,要求生成结构具有对称性 程序设计经历了原坐标与对称操作矩阵相乘,新坐标与原坐标遍历比较距离,设置参数输出不同对称操作下的对称坐标对,点群矩阵中若干种对称操作组成的对称坐标集拼接与最终的排列组合 目前遗留问题: 1.排列组合尚未完成 2.计算程序中独立循环使用太频繁,简化与优化 from 矩阵相乘算法 import Matmul import copy def txt_read(files):#txt_read函数用来读取B104.xyz,并生成相应字典,避免手动输入。.xyz打不开依旧是大问题,最后还是转成.txt进行的 txt_dict = {} fopen = open(files) i=1 for line in fopen.readlines(): line = str(line).replace("\n","") txt_list=[line.split(' ',3)[1],line.split(' ',3)[2],line.split(' ',3)[3]]#用空格分割三次,取后三位的笛卡尔坐标 #print(txt_list) txt_dict[line.split(' ',3)[0]] = txt_list #split()函数用法,逗号前面是以什么来分割,后面是分割成n+1个部分,且以数组形式从0开始 fopen.close() return txt_dict #用字典可以方便查找指定原子的坐标,比列表方便。 def molecular_centroid(xyz,i):#质心化 r=0 while i<312: r+=float(xyz[i]) i+=3 return r/104 def distance(xyz_new,xyz_ori,i,j): m=float(xyz_new[i][0]) n=float(xyz_ori[j][0]) m1=float(xyz_new[i][1]) n1=float(xyz_ori[j][1]) m2=float(xyz_new[i][2]) n2=float(xyz_ori[j][2]) return ((m-n) ** 2 + (m1 -n1) ** 2 + (m2-n2) **2)**0.5 def remove_duplicate(对称点集): c = copy.deepcopy(对称点集) aa = [] for r in range(len(c) - 2): for t in range(r + 1, len(c)): if c[t][0] + c[t][1] == c[r][0] + c[r][1]: aa.append(t) #去重 news_aa = [] for id in aa: if id not in news_aa: news_aa.append(id) news_aa.sort() a = 0 for i in range(0, len(news_aa)): b = news_aa[i] - a del c[b] a += 1 return c def remove_duplicate_plus(对称点集): c = copy.deepcopy(对称点集) aa = [] for r in range(len(c) - 2): a=0 for m in c[r]: a+=m for t in range(r + 1, len(c)): b=0 for n in c[t]: b+=n if b == a: aa.append(t) news_aa = [] for id in aa: if id not in news_aa: news_aa.append(id) news_aa.sort() a = 0 for i in range(0, len(news_aa)): b = news_aa[i] - a del c[b] a += 1 return c #读取B104基础坐标文件 txt_original_dict = txt_read('104.1.txt') #print(txt_original_dict) #测试代码 #将字典转换为列表 txt_104=[] txt_dic=txt_original_dict.copy()#copy一个防止修改原字典 for txt in txt_dic.values(): for j in txt: #print(j)测试代码 txt_104.append(j) print(txt_104)#测试代码 # #将字典内的所有坐标转成列表,用到value循环 #计算104个坐标质心化后的一个坐标(r1,r2,r3) r1=molecular_centroid(txt_104,0) r2=molecular_centroid(txt_104,1) r3=molecular_centroid(txt_104,2) print(r1) print(r2) print(r3) #让所有原始坐标减去质心化坐标,达到质心化 txt_104_1=[] txt_104_2=[] t=0 while t < 312: txt_104_3 = [] a = float(txt_104[t]) b = float(txt_104[t+1]) c = float(txt_104[t+2]) a -= float(r1) txt_104_2.append(a) txt_104_3.append(a) b -= float(r2) txt_104_2.append(b) txt_104_3.append(b) c -= float(r3) txt_104_2.append(c) txt_104_3.append(c) t += 3 txt_104_1.append(txt_104_3) #txt_104_2是一维数组,有312个;txt_104_1是二维数组,有104个,大数组里存104个坐标.用_2是因为while循环里是一个一个传进去的,下一步优化代码优化while,并且把它放到class里 print(txt_104_1) print(txt_104_2) #质心化后的坐标与目标点群矩阵相乘,得到对称坐标 Flag=1 w=0 xyz_mult_E=[] xyz_mult_c2=[] xyz_mult_cs=[] xyz_mult_ci=[] xyz_mult_c5_1=[] xyz_mult_c5_2=[] xyz_mult_c5_3=[] xyz_mult_c5_4=[] xyz_mult_c5v_cs_1=[] xyz_mult_c5v_cs_2=[] xyz_mult_c5v_cs_3=[] xyz_mult_c5v_cs_4=[] xyz_mult_c5v_cs_5=[] xyz_mult_d5_c2_1=[] xyz_mult_d5_c2_2=[] xyz_mult_d5_c2_3=[] xyz_mult_d5_c2_4=[] xyz_mult_d5_c2_5=[] xyz_mult_d5d_cs_1=[] xyz_mult_d5d_cs_2=[] xyz_mult_d5d_cs_3=[] xyz_mult_d5d_cs_4=[] xyz_mult_d5d_cs_5=[] xyz_mult_d5d_c2_1=[] xyz_mult_d5d_c2_2=[] xyz_mult_d5d_c2_3=[] xyz_mult_d5d_c2_4=[] xyz_mult_d5d_c2_5=[] xyz_mult_d5d_s10_1=[] xyz_mult_d5d_s10_2=[] xyz_mult_d5d_s10_3=[] xyz_mult_d5d_s10_4=[] while Flag: mat1 = Matmul(mat_shape=(1, 3))#实例化1,指的是B104文件 mat2 = Matmul(mat_shape=(3, 3))#实例化2,指的是点群矩阵 mat3 = Matmul(mat_shape=(3,3)) mat4 = Matmul(mat_shape=(3,3)) mat5 = Matmul(mat_shape=(3,3)) mat6 = Matmul(mat_shape=(3, 3)) mat7 = Matmul(mat_shape=(3, 3)) mat8 = Matmul(mat_shape=(3, 3)) mat9 = Matmul(mat_shape=(3, 3)) mat10 = Matmul(mat_shape=(3, 3)) mat11= Matmul(mat_shape=(3, 3)) mat12= Matmul(mat_shape=(3, 3)) mat13= Matmul(mat_shape=(3, 3)) mat14= Matmul(mat_shape=(3, 3)) mat15= Matmul(mat_shape=(3, 3)) mat16= Matmul(mat_shape=(3, 3)) mat17= Matmul(mat_shape=(3, 3)) mat18= Matmul(mat_shape=(3, 3)) mat19= Matmul(mat_shape=(3, 3)) mat20= Matmul(mat_shape=(3, 3)) mat21= Matmul(mat_shape=(3, 3)) mat22= Matmul(mat_shape=(3, 3)) mat23= Matmul(mat_shape=(3, 3)) mat24 = Matmul(mat_shape=(3, 3)) mat25 = Matmul(mat_shape=(3, 3)) mat26 = Matmul(mat_shape=(3, 3)) mat27 = Matmul(mat_shape=(3, 3)) mat28 = Matmul(mat_shape=(3, 3)) mat29 = Matmul(mat_shape=(3, 3)) mat30 = Matmul(mat_shape=(3, 3)) mat31 = Matmul(mat_shape=(3, 3)) mat32 = Matmul(mat_shape=(3, 3)) mat33= Matmul(mat_shape=(3,3)) mat1.i=w w+=3#一次传3个,自增3 mat1.d104(txt_104_2)#txt_104_2是不变的 mat2.E()#E是变的.用哪个点群矩阵, 在这里改.调参位置 #mat1.show()#测试代码 #mat2.show()测试代码 #print('结果为:') new=mat1.multiply(mat2) xyz_mult_E.append(new[0]) #print(xyz_mult_E) if w>=312: Flag=0 mat3.c2() new = mat1.multiply(mat3) xyz_mult_c2.append(new[0]) #print(xyz_mult_c2) if w >= 312: Flag = 0 mat4.cs() new = mat1.multiply(mat4) xyz_mult_cs.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat5.ci() new = mat1.multiply(mat5) xyz_mult_ci.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat6.c5_1() new = mat1.multiply(mat6) xyz_mult_c5_1.append(new[0]) #print(xyz_mult_c5_1) if w >= 312: Flag = 0 mat7.c5_2() new = mat1.multiply(mat7) xyz_mult_c5_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat8.c5_3() new = mat1.multiply(mat8) xyz_mult_c5_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat9.c5_4() new = mat1.multiply(mat9) xyz_mult_c5_4.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat10.c5v_cs_1() new = mat1.multiply(mat10) xyz_mult_c5v_cs_1.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat11.c5v_cs_2() new = mat1.multiply(mat11) xyz_mult_c5v_cs_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat12.c5v_cs_3() new = mat1.multiply(mat12) xyz_mult_c5v_cs_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat13.c5v_cs_4() new = mat1.multiply(mat13) xyz_mult_c5v_cs_4.append(new[0]) #print(xyz_mult_c5v_cs_4) if w >= 312: Flag = 0 mat14.c5v_cs_5() new = mat1.multiply(mat14) xyz_mult_c5v_cs_5.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat15.d5_c2_1() new = mat1.multiply(mat15) xyz_mult_d5_c2_1.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat16.d5_c2_2() new = mat1.multiply(mat16) xyz_mult_d5_c2_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat17.d5_c2_3() new = mat1.multiply(mat17) xyz_mult_d5_c2_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat18.d5_c2_4() new = mat1.multiply(mat18) xyz_mult_d5_c2_4.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat19.d5_c2_5() new = mat1.multiply(mat19) xyz_mult_d5_c2_5.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat20.d5d_cs_1() new = mat1.multiply(mat20) xyz_mult_d5d_cs_1.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat21.d5d_cs_2() new = mat1.multiply(mat21) xyz_mult_d5d_cs_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat22.d5d_cs_3() new = mat1.multiply(mat22) xyz_mult_d5d_cs_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat23.d5d_cs_4() new = mat1.multiply(mat23) xyz_mult_d5d_cs_4.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat24.d5d_cs_5() new = mat1.multiply(mat24) xyz_mult_d5d_cs_5.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat25.d5d_c2_1() new = mat1.multiply(mat25) xyz_mult_d5d_c2_1.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat26.d5d_c2_2() new = mat1.multiply(mat26) xyz_mult_d5d_c2_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat27.d5d_c2_3() new = mat1.multiply(mat27) xyz_mult_d5d_c2_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat28.d5d_c2_4() new = mat1.multiply(mat28) xyz_mult_d5d_c2_4.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat29.d5d_c2_5() new = mat1.multiply(mat29) xyz_mult_d5d_c2_5.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat30.d5d_s10() new = mat1.multiply(mat30) xyz_mult_d5d_s10_1.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat31.d5d_s10_2() new = mat1.multiply(mat31) xyz_mult_d5d_s10_2.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat32.d5d_s10_3() new = mat1.multiply(mat32) xyz_mult_d5d_s10_3.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 mat33.d5d_s10_4() new = mat1.multiply(mat33) xyz_mult_d5d_s10_4.append(new[0]) # print(xyz_new) if w >= 312: Flag = 0 #print(xyz_mult_c2) xyz=[xyz_mult_E,xyz_mult_c2,xyz_mult_cs,xyz_mult_ci,xyz_mult_c5_1,xyz_mult_c5_2,xyz_mult_c5_3,xyz_mult_c5_4,xyz_mult_c5v_cs_1,xyz_mult_c5v_cs_2,xyz_mult_c5v_cs_3,xyz_mult_c5v_cs_4,xyz_mult_c5v_cs_5,xyz_mult_d5_c2_1,xyz_mult_d5_c2_2,xyz_mult_d5_c2_3,xyz_mult_d5_c2_4,xyz_mult_d5_c2_5,xyz_mult_d5d_cs_1,xyz_mult_d5d_cs_2,xyz_mult_d5d_cs_3,xyz_mult_d5d_cs_4,xyz_mult_d5d_cs_5,xyz_mult_d5d_c2_1,xyz_mult_d5d_c2_2,xyz_mult_d5d_c2_3,xyz_mult_d5d_c2_4,xyz_mult_d5d_c2_5,xyz_mult_d5d_s10_1,xyz_mult_d5d_s10_2,xyz_mult_d5d_s10_3,xyz_mult_d5d_s10_4] #用得到的对称坐标与原坐标一一比较距离,符合条件的把对称坐标下标和原坐标下标存到列表里。因为矩阵相乘的时候原坐标和对称坐标是一一对应乘出来的,所以对称坐标的下标就是原坐标的下标。 #而对称坐标与原坐标一一比较得到距离符合条件的原坐标下标就是这个对称坐标对应的原坐标在这个点群矩阵下的对称坐标。 E_对称点集=[] c2_对称点集=[] cs_对称点集=[] ci_对称点集=[] c5_1对称点集=[] c5_2对称点集=[] c5_3对称点集=[] c5_4对称点集=[] c5v_cs_1对称点集=[] c5v_cs_2对称点集=[] c5v_cs_3对称点集=[] c5v_cs_4对称点集=[] c5v_cs_5对称点集=[] d5_c2_1对称点集=[] d5_c2_2对称点集=[] d5_c2_3对称点集=[] d5_c2_4对称点集=[] d5_c2_5对称点集=[] d5d_cs_1对称点集=[] d5d_cs_2对称点集=[] d5d_cs_3对称点集=[] d5d_cs_4对称点集=[] d5d_cs_5对称点集=[] d5d_c2_1对称点集=[] d5d_c2_2对称点集=[] d5d_c2_3对称点集=[] d5d_c2_4对称点集=[] d5d_c2_5对称点集=[] d5d_s10对称点集=[] d5d_s10_2对称点集=[] d5d_s10_3对称点集=[] d5d_s10_4对称点集=[] #用乘出来的新矩阵去和原来的坐标一一比较距离,距离小于一定值的坐标匹配组合 for b,c in enumerate(xyz): for i in range(104): for j in range(104): dis=distance(c,txt_104_1,i,j)#传进的第一个参数变 if b in [1,2,8,9,10,11,12,18,19,20,21,22,23,24,25,26,27]: if dis <= 1.0: symmetric_coordinates=[] symmetric_coordinates.append(j) symmetric_coordinates.append(i) if c==xyz_mult_c2: c2_对称点集.append(symmetric_coordinates) elif c==xyz_mult_cs: cs_对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5v_cs_1: c5v_cs_1对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5v_cs_2: c5v_cs_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5v_cs_3: c5v_cs_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5v_cs_4: c5v_cs_4对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5v_cs_5: c5v_cs_5对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_cs_1: d5d_cs_1对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_cs_2: d5d_cs_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_cs_3: d5d_cs_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_cs_4: d5d_cs_4对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_cs_5: d5d_cs_5对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_c2_1: d5d_c2_1对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_c2_2: d5d_c2_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_c2_3: d5d_c2_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_c2_4: d5d_c2_4对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_c2_5: d5d_c2_5对称点集.append(symmetric_coordinates) else: if dis <= 1.0e-5: symmetric_coordinates=[] symmetric_coordinates.append(j) symmetric_coordinates.append(i) if c==xyz_mult_E: E_对称点集.append(symmetric_coordinates) elif c==xyz_mult_ci: ci_对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5_1: c5_1对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5_2: c5_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5_3: c5_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_c5_4: c5_4对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5_c2_1: d5_c2_1对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5_c2_2: d5_c2_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5_c2_3: d5_c2_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5_c2_4: d5_c2_4对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5_c2_5: d5_c2_5对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_s10_1: d5d_s10对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_s10_2: d5d_s10_2对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_s10_3: d5d_s10_3对称点集.append(symmetric_coordinates) elif c==xyz_mult_d5d_s10_4: d5d_s10_4对称点集.append(symmetric_coordinates) 对称点集=[E_对称点集,c2_对称点集,cs_对称点集,ci_对称点集,c5_1对称点集,c5_2对称点集,c5_3对称点集,c5_4对称点集,c5v_cs_1对称点集,c5v_cs_2对称点集,c5v_cs_3对称点集,c5v_cs_4对称点集,c5v_cs_5对称点集,d5_c2_1对称点集,d5_c2_2对称点集,d5_c2_3对称点集,d5_c2_4对称点集,d5_c2_5对称点集,d5d_cs_1对称点集,d5d_cs_2对称点集,d5d_cs_3对称点集,d5d_cs_4对称点集,d5d_cs_5对称点集,d5d_c2_1对称点集,d5d_c2_2对称点集,d5d_c2_3对称点集,d5d_c2_4对称点集,d5d_c2_5对称点集,d5d_s10对称点集,d5d_s10_2对称点集,d5d_s10_3对称点集,d5d_s10_4对称点集] #去重,保留后80行 for c in 对称点集: for i in c[:]: a=c.index(i) if float(i[0])<=26 or float(i[1])<=26: del c[a] c=remove_duplicate(c) #进一步连接,将零散的对称操作组合成对称矩阵集合 c2=[] cs=[] ci=[] c5=[] c5v=[] d5=[] d5d=[] for i in range(77): a=int(i)+27 b=0 c=0 d=0 e=0 f=0 g=0 h=0 l=0 m=0 n=0 o=0 p=0 q=0 r=0 s=0 t=0 u=0 v=0 w=0 x=0 y=0 z=0 temporary = [] temporary.append(a) for j in range(len(c2_对称点集)): if c2_对称点集[j][0]==a: temporary.append(int(c2_对称点集[j][1])) c2.append(temporary) temporary = [] temporary.append(a) for j in range(len(cs_对称点集)): if cs_对称点集[j][0] == a: temporary.append(int(cs_对称点集[j][1])) cs.append(temporary) temporary = [] temporary.append(a) for j in range(len(ci_对称点集)): if ci_对称点集[j][0] == a: temporary.append(int(ci_对称点集[j][1])) ci.append(temporary) temporary = [] temporary.append(a) for j in range(len(c5_1对称点集)): if c5_1对称点集[j][0]==a: b=(int(c5_1对称点集[j][1])) for j in range(len(c5_2对称点集)): if c5_2对称点集[j][0]==a: c=(int(c5_2对称点集[j][1])) for j in range(len(c5_3对称点集)): if c5_3对称点集[j][0] == a: d=(int(c5_3对称点集[j][1])) for j in range(len(c5_4对称点集)): if c5_4对称点集[j][0] == a: e=(int(c5_4对称点集[j][1])) if b!=0 and c!=0 and d!=0 and e!=0: temporary.append(int(b)) temporary.append(int(c)) temporary.append(int(d)) temporary.append(int(e)) c5.append(temporary) b = 0 c = 0 d = 0 e = 0 f = 0 g = 0 h = 0 l = 0 m = 0 n = 0 o = 0 p = 0 q = 0 r = 0 s = 0 t = 0 u = 0 v = 0 w = 0 x = 0 y = 0 z = 0 temporary = [] temporary.append(a) for j in range(len(c5_1对称点集)): if c5_1对称点集[j][0] == a: b = (int(c5_1对称点集[j][1])) for j in range(len(c5_2对称点集)): if c5_2对称点集[j][0] == a: c = (int(c5_2对称点集[j][1])) for j in range(len(c5_3对称点集)): if c5_3对称点集[j][0] == a: d = (int(c5_3对称点集[j][1])) for j in range(len(c5_4对称点集)): if c5_4对称点集[j][0] == a: e = (int(c5_4对称点集[j][1])) for j in range(len(c5v_cs_1对称点集)): if c5v_cs_1对称点集[j][0] == a: f = (int(c5v_cs_1对称点集[j][1])) for j in range(len(c5v_cs_2对称点集)): if c5v_cs_2对称点集[j][0] == a: g = (int(c5v_cs_2对称点集[j][1])) for j in range(len(c5v_cs_3对称点集)): if c5v_cs_3对称点集[j][0] == a: h = (int(c5v_cs_3对称点集[j][1])) for j in range(len(c5v_cs_4对称点集)): if c5v_cs_4对称点集[j][0] == a: l = (int(c5v_cs_4对称点集[j][1])) for j in range(len(c5v_cs_5对称点集)): if c5v_cs_5对称点集[j][0] == a: m = (int(c5v_cs_5对称点集[j][1])) if b != 0 and c != 0 and d != 0 and e != 0 and f!=0 and g!=0 and h!=0 and l!=0 and m!=0: temporary.append(int(b)) temporary.append(int(c)) temporary.append(int(d)) temporary.append(int(e)) temporary.append(int(f)) temporary.append(int(g)) temporary.append(int(h)) temporary.append(int(l)) temporary.append(int(m)) c5v.append(temporary) b = 0 c = 0 d = 0 e = 0 f = 0 g = 0 h = 0 l = 0 m = 0 n = 0 o = 0 p = 0 q = 0 r = 0 s = 0 t = 0 u = 0 v = 0 w = 0 x = 0 y = 0 z = 0 temporary = [] temporary.append(a) for j in range(len(c5_1对称点集)): if c5_1对称点集[j][0] == a: b = (int(c5_1对称点集[j][1])) for j in range(len(c5_2对称点集)): if c5_2对称点集[j][0] == a: c = (int(c5_2对称点集[j][1])) for j in range(len(c5_3对称点集)): if c5_3对称点集[j][0] == a: d = (int(c5_3对称点集[j][1])) for j in range(len(c5_4对称点集)): if c5_4对称点集[j][0] == a: e = (int(c5_4对称点集[j][1])) for j in range(len(d5_c2_1对称点集)): if d5_c2_1对称点集[j][0] == a: f = (int(d5_c2_1对称点集[j][1])) for j in range(len(d5_c2_2对称点集)): if d5_c2_2对称点集[j][0] == a: g = (int(d5_c2_2对称点集[j][1])) for j in range(len(d5_c2_3对称点集)): if d5_c2_3对称点集[j][0] == a: h = (int(d5_c2_3对称点集[j][1])) for j in range(len(d5_c2_4对称点集)): if d5_c2_4对称点集[j][0] == a: l = (int(d5_c2_4对称点集[j][1])) for j in range(len(d5_c2_5对称点集)): if d5_c2_5对称点集[j][0] == a: m = (int(d5_c2_5对称点集[j][1])) if b != 0 and c != 0 and d != 0 and e != 0 and f != 0 and g != 0 and h != 0 and l != 0 and m != 0: temporary.append(int(b)) temporary.append(int(c)) temporary.append(int(d)) temporary.append(int(e)) temporary.append(int(f)) temporary.append(int(g)) temporary.append(int(h)) temporary.append(int(l)) temporary.append(int(m)) d5.append(temporary) b = 0 c = 0 d = 0 e = 0 f = 0 g = 0 h = 0 l = 0 m = 0 n = 0 o = 0 p = 0 q = 0 r = 0 s = 0 t = 0 u = 0 v = 0 w = 0 x = 0 y = 0 z = 0 temporary = [] temporary.append(a) for j in range(len(c5_1对称点集)): if c5_1对称点集[j][0] == a: b = (int(c5_1对称点集[j][1])) for j in range(len(c5_2对称点集)): if c5_2对称点集[j][0] == a: c = (int(c5_2对称点集[j][1])) for j in range(len(c5_3对称点集)): if c5_3对称点集[j][0] == a: d = (int(c5_3对称点集[j][1])) for j in range(len(c5_4对称点集)): if c5_4对称点集[j][0] == a: e = (int(c5_4对称点集[j][1])) for j in range(len(d5d_s10对称点集)): if d5d_s10对称点集[j][0] == a: f = (int(d5d_s10对称点集[j][1])) for j in range(len(d5d_s10_2对称点集)): if d5d_s10_2对称点集[j][0] == a: g = (int(d5d_s10_2对称点集[j][1])) for j in range(len(d5d_s10_3对称点集)): if d5d_s10_3对称点集[j][0] == a: h = (int(d5d_s10_3对称点集[j][1])) for j in range(len(d5d_s10_4对称点集)): if d5d_s10_4对称点集[j][0] == a: l = (int(d5d_s10_4对称点集[j][1])) for j in range(len(d5d_c2_1对称点集)): if d5d_c2_1对称点集[j][0] == a: m = (int(d5d_c2_1对称点集[j][1])) for j in range(len(d5d_c2_2对称点集)): if d5d_c2_2对称点集[j][0] == a: n = (int(d5d_c2_2对称点集[j][1])) for j in range(len(d5d_c2_3对称点集)): if d5d_c2_3对称点集[j][0] == a: o = (int(d5d_c2_3对称点集[j][1])) for j in range(len(d5d_c2_4对称点集)): if d5d_c2_4对称点集[j][0] == a: p = (int(d5d_c2_4对称点集[j][1])) for j in range(len(d5d_c2_5对称点集)): if d5d_c2_5对称点集[j][0] == a: q = (int(d5d_c2_5对称点集[j][1])) for j in range(len(d5d_cs_1对称点集)): if d5d_cs_1对称点集[j][0] == a: r = (int(d5d_cs_1对称点集[j][1])) for j in range(len(d5d_cs_2对称点集)): if d5d_cs_2对称点集[j][0] == a: s = (int(d5d_cs_2对称点集[j][1])) for j in range(len(d5d_cs_3对称点集)): if d5d_cs_3对称点集[j][0] == a: t = (int(d5d_cs_3对称点集[j][1])) for j in range(len(d5d_cs_4对称点集)): if d5d_cs_4对称点集[j][0] == a: u = (int(d5d_cs_4对称点集[j][1])) for j in range(len(d5d_cs_5对称点集)): if d5d_cs_5对称点集[j][0] == a: v = (int(d5d_cs_5对称点集[j][1])) if b != 0 and c != 0 and d != 0 and e != 0 and f != 0 and g != 0 and h != 0 and l != 0 and m != 0 and n!=0 and o!=0 and p!=0 and q!=0 and r!=0 and s!=0 and t!=0 and u!=0 and v!=0: temporary.append(int(b)) temporary.append(int(c)) temporary.append(int(d)) temporary.append(int(e)) temporary.append(int(f)) temporary.append(int(g)) temporary.append(int(h)) temporary.append(int(l)) temporary.append(int(m)) temporary.append(int(n)) temporary.append(int(o)) temporary.append(int(p)) temporary.append(int(q)) temporary.append(int(r)) temporary.append(int(s)) temporary.append(int(t)) temporary.append(int(u)) temporary.append(int(v)) d5.append(temporary) news_c2 = [] for id in c2: if id not in news_c2: news_c2.append(id) print(f"c2:{news_c2}") print(len(news_c2)) news_cs = [] for id in cs: if id not in news_cs: news_cs.append(id) print(f"cs:{news_cs}") print(len(news_cs)) news_ci = [] for id in ci: if id not in news_ci: news_ci.append(id) print(f"ci:{news_ci}") print(len(news_ci)) c5=remove_duplicate_plus(c5) news_c5 = [] for id in c5: if id not in news_c5: news_c5.append(id) print(f"c5:{news_c5}") c5v=remove_duplicate_plus(c5v) print(f"c5v:{c5v}") d5=remove_duplicate_plus(d5) print(f"d5:{d5}") d5d=remove_duplicate_plus(d5d) print(f"d5d:{d5d}")
计算化学——python实现坐标替换与生成
最新推荐文章于 2022-04-13 14:17:51 发布