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