在比较基因组学中,在两种基因组中鉴定直系同源基因[被认为具有相似功能的基因]在各种应用中是重要的。来自两个基因组的这些基因之间的关系可以是1:1,1:M,M:1和M:M。在Scala中,我编写了这个简单的案例类来表示一个基因:
case class Gene(id: Int, protId: String, geneId: String)
和这个函数来做映射:
def orthologyMapping(genome1: Array[Gene], genome2: Array[Gene]): Vector[HashMap[Gene, Gene]] = { ...
我在文档中找不到这种特定类型的映射关系集合的任何内置类型。如您所见,orthologyMapping()返回类型是Vector [HashMap [Gene,Gene]],该Vector包含一堆1:1关系的HashMap。
答案 0 :(得分:1)
您是否考虑过将这组关系建模为图表?因为这对我来说似乎很自然。如果您想要一个可以使用的图书馆,请查看Verizon的OnCue团队的Quiver: https://verizon.github.io/quiver/
答案 1 :(得分:0)
HashMap[T,U]
表示M:1关系,例如(a -> 1),(b -> 1)
。要表示M:M关系,您可以使用HashMap[Gene, Set[Gene]]
。这可以模拟M:M关系,例如(a -> (1,2)),(b -> (1,2))