Scala:表示1:1、1:M,M:1和M:M:M:M:M:M:M:M:M:同一类型对象之间的关系的数据结构



在比较基因组学中,在两个基因组中鉴定直系同源基因[被认为具有相似功能的基因]在多种应用中很重要。来自两个基因组的这些基因之间的关系可以是1:1,1:m,m:1和m:m:m。在Scala中,我写了这个简单的案例类来表示一个基因:

case class Gene(id: Int, protId: String, geneId: String)

进行映射的功能:

def orthologyMapping(genome1: Array[Gene], genome2: Array[Gene]): Vector[HashMap[Gene, Gene]] = { ...

我在文档中找不到任何内置类型,用于这种特定类型的映射关系集合。如您所见,Orthology -Mmapping()返回类型是向量[hashmap [Gene,Gene]],并且该向量包含一堆1:1关系的哈希图。

您是否考虑过建模这组关系作为图形?因为这对我来说似乎很合适。如果您想要准备使用的图书馆,请查看Verizon的Oncue团队的Quiver:https://verizon.github.io/quiver/

HashMap[T,U]表示m:1关系,例如 (a -> 1),(b -> 1)。为了表示M:M关系,您可以使用HashMap[Gene, Set[Gene]]。这可以建模m:m关系,例如(a -> (1,2)),(b -> (1,2))

最新更新