Python运行set.intersection并将一组集作为输入

时间:2017-04-16 10:40:34

标签: python-2.7

我正在使用生物数据集,直接从转录组(RNA)中寻找某些蛋白质序列。我有一组每个数据集的蛋白质名称,并希望找到所有数据集共有的。由于数据的处理方式,我最终得到一个包含所有子集的变量。 由于set.intersect()命令的工作原理,它至少需要2组作为输入:

IDs = set.intersection(transc1 & trans2)

但是我只有一个输入colA,其中包含30组80到100个条目。以下是我到目前为止的情况:

from glob import glob
for file in glob('*_query.tsv'): #input all 30 datasets, first column with protein IDs
  sources = file
  colnames = ['a', 'b', 'c', 'd', 'e', 'f'] 
  df = pandas.read_csv(sources, sep='\t', names=colnames) #colnames headers for df contruction
  colA = df.a.tolist() #turn column a, protein IDs, into list
  IDs = set(colA) #turn lists into sets

如果我print(colA),输出是这样的,有两个未命名的元素作为集合:

set(['ID2', 'ID8', 'ID35', 'ID77', 'ID78', 'ID199', 'ID211'])
set(['ID1', 'ID5', 'ID8', 'ID88', 'ID105', 'ID205'])

此时我卡住了。我无法set.intersection()使用IDs集合。还尝试了语法似乎有用的pandas.merge(*IDs),但是比较的条目数超过了最大值(12)。

我想使用集合,因为与列表不同,它应该能够快速找到所有数据集之间的公共ID。如果有更好的方法,我就是全力以赴。

非常感谢帮助。

0 个答案:

没有答案