2016-11-24 35 views
-1

在比较基因组学中,鉴定了直向同源基因[即相信的基因在两个基因组中具有相似的功能]在各种应用中都很重要。来自两个基因组的这些基因之间的关系可以是1:1,1:M,M:1和M:M。在Scala中,我写了这个简单的例子类来表示基因:Scala:用于表示同一类型对象之间1:1,1:M,M:1和M:M关系的数据结构

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。

回答

1

您是否曾考虑将这组关系建模为图形?因为这对我来说似乎是天作之合。如果你想要一个可以使用的图书馆,请看看来自Verizon的OnCue团队的Quiver: https://verizon.github.io/quiver/

+0

在我的情况下,尽管我正在寻找更简单,更原始的Scala。我最初的想法是使返回类型为Vector [HashMap [List [Gene],List [Gene]]],因为在每个HashMap中,键和值列表都不能为空[两者至少可以有一个项目] – 7kemZmani

0

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

+0

HashMap的使用实际上并没有捕捉到关系的真实性;我现在使用的quick-and-dirty解决方案是Vector [List [List [Gene],List [Gene]]]作为orthologyMapping()函数的返回类型 – 7kemZmani

相关问题