问题描述
在做数据处理的时候,根据原论文的蛋白质链下载蛋白质PDB文件,大体上还算正常。但是有的protein的PDB文件在PDB数据库已经不存在了,所以下载后的PDB文件理论上只属于原论文提到的PDB文件的一个子集。由于数据比较大,手动去找会耗费大量的时间,所以为了找出这些不存在的PDB文件,下面写一段代码来实现。
问题转换与实现
首先,将问题转化成一个数学问题。
问题转化:原论文提及的数据集(一个大集合U),现在下载到的只是一个子集合A,目的是求出U中不包含A的子集合(补集):B=U-A
.
最终转化为:根据集合U和子集A,计算A的补集B=U-A.
参数:
- file1:大集合文件U
- file2: 下载后的一个子集合A
- outfile:输出文件
代码如下:
compareTwoFile.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import os def compareTwoFile(file1,file2,outfile): with open(outfile,'w') as fo: fw = [] with open(file1,'r') as fr1: fr1_con = [each.strip() for each in fr1.readlines()] with open(file2,'r') as fr2: fr2_con =[each.strip() for each in fr2.readlines()] for eachline in fr1_con: if eachline not in fr2_con: fw.append(eachline) fo.write(''.join(fw)) if __name__=="__main__": file1 = os.sys.argv[1] file2 = os.sys.argv[2] outfile = os.sys.argv[3] compareTwoFile(file1,file2,outfile)
|
Test sample:
1 2 3 4
| python compareTwoFile.py \ /ifs/home/liudiwei/DNA_BP/_data/Exp_DBPI/train_set.protein \ /ifs/home/liudiwei/DNA_BP/_data/Exp_DBPI/pdb_trainset.txt \ /ifs/home/liudiwei/DNA_BP/_data/Exp_DBPI/compare.result
|
file1和file2的top10格式:
1A02
1A0A
1A3Q
1A53
1A8E
1A8P
1A8Y
1AAC
1ABE
1AC5