2016-11-24 10 views
-1

比較ゲノミクスでは、オーソロガスな遺伝子[これは信じられている遺伝子2つのゲノムにおける類似の機能を有する]は、様々な用途において重要である。 2つのゲノムからのこれらの遺伝子間の関係は、1:1,1:M、M:1およびM:Mであり得る。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]] = { ... 

私はドキュメントで見つけることができませんでした任意のビルトインタイプのためにマッピング関係のこの特定のタイプのコレクション。ご覧のように、戻り値の型はベクトル[HashMap [Gene、Gene]]で、そのベクトルには1:1の関係のHashMapの束が含まれています。

答えて

1

この関係のモデルをグラフとしてモデル化すると考えましたか?それは私にとって自然なフィット感のようです。使用準備が整った図書館をご希望の場合は、VerizonのOnCueチームのQuiverをご覧ください。 https://verizon.github.io/quiver/

+0

私の場合、私はスカラーにとってよりシンプルでプリミティブなものを探していました。私の最初の考えは、それぞれのHashMapで、キーも値リストも空ではないことを前提として、返される型Vector [HashMap [List [Gene]、List [Gene]]] – 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の使用方法は実際には関係の現実を捕捉しません。私が今使っている迅速で汚い解決策は、orthotypeMapping()関数の戻り型としてVector [List [List] [List] [Gene]]]です。 – 7kemZmani

関連する問題