我正在使用生物数据集,直接从转录组(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。如果有更好的方法,我就是全力以赴。
非常感谢帮助。