染色体履歴のJavaクラス管理



Java勉強会ryamadaのコンピュータ日記でゼロからJavaアプリケーションの作成を勉強している。

今、2倍体生物の有性生殖における染色体の履歴を発生するプログラムをkuma_the_seal君が作っている。僕は、それを流用するべく、少し別のことも考えている。まだ何を考えているのか自分でもうまく捕らえ切れていないのだが。

でも、こんなクラスを作りたい。そのためには、どんな風にJavaのソースを書けばいいのだろうか?

扱われるクラス(オブジェクト)はこんな構成

生物学的な意味は

Gは染色体の履歴存在・履歴をすべて体現したグラフの全体

Hkは第k世代のハプロタイプの集合

hjkは、第k世代の第j番目の染色体


G={H1,H2,...,Hn}

Hk={h1k,h2k,...,hmk}

のように表され、3段階構成の一番小さな要素であるhjkは、次のような条件を持つ

  • 自身の区別
    • 親を持たない第1世代であるか
    • 親を持つか
  • 親情報
    • 組換え体なら、親を2つ、組換え体でないなら、親は1つで、2つめの親は空要素
    • また、1つ目の親は、もっとも5'側の塩基を伝達した染色体であるものとする
    • さらに、遺伝においては、由来親の性別が問題となることがあるので、それに関する情報を持つものとする
    • 親要素は1世代前のHk-1の要素である
  • 組換え位置情報
    • 組換え位置の5'側塩基番号の集合Rjkとする

具体的には

hjkについて

type={a or b}

type=aのとき、oya1,oya2,oya1sex,oya2sex,recはいずれも値なし

type=bのときは以下の要領で値を持つ

oya1=hx1k-1

oya2=hx2k-1 または 値なし

oya1sex={f,m}

oya2sex={f,m,空}

rec=Rjk;Rjk={rjk1,rjk2,...,rjki} または{(要素なし)}