python 中打开两个或多个泡菜然后确定它们之间的条目交集的最佳方法是什么?

What is the best approach in python for opening two or more pickles and then determining the intersection of entries between them?

我提前道歉,因为我无法在不提及一些生物学术语的情况下解释我想做的事情。我将尝试以最基本的方式解释它们。

在我最近开发的代码中,用户以基因(即充当 "blueprint" 的化合物序列,供细胞构建事物)或转录因子命名(即一种与基因结合以帮助它们在细胞中表达的蛋白质),经过一些处理后,构建了一个字典,随后将其存储在 pickles 中。之后,打开 pickle,读取,并使用存储在 pickle 中的信息构建 table。

我应该提到,当一个人输入一个基因或转录因子(我将其缩写为 TFs)时,构建的字典分别具有 TFs 或基因的键,值是一个分数数组。这些分数反映了TF或基因在基因的某个位置相互结合的概率,如果某个基因和TF之间没有产生正分数,那么它就被排除在字典之外(注:我所有的基因序列具有相同的长度)。

尽管我的基本代码流水线运行良好,但它一次仅适用于一个基因或一个转录因子。我的代码的一个方面是我真的希望允许用户一次输入一个或多个。但是,为此,我需要做两件事:

  1. 在每个 pickle 的内容之间创建一个交集,并提取所有 pickle 共有的条目。
  2. 处理值中的分数,使它们代表某个 TF 在给定位置与两个或多个基因结合的值。

我对上面列表中的第一项的问题是,我不确定在我打开泡菜并将它们转储到我的脚本后是否应该将它们相交,或者将它们相交在计算上是否不那么复杂当它们还是泡菜的时候。

我对上面列表中的第二项的问题是,我不知道我应该实施哪种数学来处理这些值,以便它们正确反映两个或多个概率。

谁能推荐我处理这些问题的最谨慎的方法?

我认为 unpickling 后最好的方法是集合库。

  • 将您的数据投射到列表和设置
  • 使用交集

https://docs.python.org/2/library/sets.html