2016-11-24 34 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

相關問題