たこぜりー研究室

大腸菌DNAは4.64Mbp。酵母は13Mbpで、ヒトは3Gbp

スポンサーサイト

#
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

MEGA 4.1 Beta の起動メッセージ

#494
MEGA 4.1 Beta だが、リリースから時間が経っているためか、あるいは新しい Build のバージョンが出ているからか、こんなメッセージが出るようになった。

MEGA 4.1 may be out of date

これが Update Notification 機能か?ちなみに XP でも出たので、Windows 7 だからではない。current test version となっているから単純に期限切れなのだろう (別に機能制限がかかるわけではないが) 。
スポンサーサイト

卒業研究 #14

#455
結局、大学院に進学して卒研続行。

よかったのはパソコンが新しくなったこと。
Core2 Duo E6850 @ 3.00GHz に 2GB RAM というマシンに XP SP2 を載せてるもんだから快適。
おかげでプログラムを動かしててファンがうるさくなることが無くなった。
加えて有線レーザーマウスでマウスパッドとおさらば。
あと、ディスプレイも SXGA になってこれまた快適。

しかし 6698 遺伝子の系統樹作成にまだ 8 分もかかっておる。

ということでプログラムを見直すと、どうも距離行列をつくるときが劣悪らしい。
なにせ距離行列のサブデータ検索がペアワイズのリニアサーチ。よって、O(N^2) 。

で、もうメモリを犠牲にして速度をとることを決意。
すると使用メモリ 20MB 増だが、2 倍速の 4 分になって、今までの時間浪費に涙。

卒業研究 #13

#450
そろそろ卒業研究発表も近づいてきて、ブーストかけていかないとね。
EST データを入手するのに、丸一日飛んだりしたが。

系統樹のほうでは、より速いという計算アルゴリズムを実装して、それを実感したり。
それでもファンがうるさくなることがあり、(修論で忙しい) 周りの先輩方に申し訳なく思ったり。
掃除したほうが早いのか?

卒業研究 #12

#433
系統樹関係のデバッグ作業を楽しくするためにデバッガビジュアライザを作成してみた。

Debugger Visualizer

分枝長の和とか Newick フォーマットの文字列とかを一緒に表示。
ただし、系統樹のスケールは思ったよりずれがあったりして凹む。
正式なのはやっぱり MEGA4 で出さないといかんかな。
まあトポロジーの確認程度の目的で使う方向で。

卒業研究 #11

#430
デバッグ中とかにコドンがバイト列だと激しく見づらいので、ちゃんとラッパークラスを作ったら一貫性も向上したり。
IComparer とか IEqualityComparer とかを別に用意せずに済むあたりが。

系統樹のほうはどうやらうまく動いているようなので (NJ とか ME とか) 、コドン使用頻度のほうを詳細にみていく方向へ。

いろいろあるようなんですがね。

・Relative Synonymous Codon Usage
・Scaled Chi-Square
・Corrected Chi-Square
・Codon Adaptation Index
・P2 Index
・GC-content
・Base Composition skew

まずは RSCU と GC 含量が基本どころだろうか。
GC 含量のほうはせっかくだから、塩基位置まで指定できるようにしてみたり。

卒業研究 #10

#423
さて、次は系統樹作成と。
まずは近隣結合法 neighbor-joining method (Saitou and Nei 1987) だな。[続きを読む]

卒業研究 #9

#420
LINQ を使わないで書くとどうなるだろう、と思って一応やってみた。
そしたら案外あっさりかけた。

もちろん匿名型は使えないので、自分で書く。
でその型のインスタンスを各々つくってリストに叩き込む。

そのときに同時に置換数も数える。
同義置換の場合にアミノ酸ごとの置換数をカウントし、辞書に入れておく。
あとは System.Collections.List<T>.Sort(System.Comparison<T>) で処理。

パフォーマンスの差がでるかどうかは不明。
VS2008 のほうは Beta2 ということもあるし。

卒業研究 #8

#419
using System.Collections.Generic;
using System.Linq;

コドン使用頻度の次は、塩基置換数だな。

n 個の配列があれば、n * (n - 1) / 2 種類の組み合わせがあるわけで…。
今回は 2 次元配列ではなく、List<?> でいく。
で見た目は 2 次元辞書。
もちろん O(1) の操作にはならないので詐欺実装だが。


でせっかくコドン使用頻度を調べたので、塩基置換もコドンごとで調べる。
こちらは前回の IEqualityComparer<byte[]> 実装を拡張して、long 値を出してそれをサブキーにする。

俺専用イメージ :

SubstitutionTable -(string, string)->> SubTable -(long)->> int


出力だが、配列の組み合わせごと、同義置換のみ、置換数の多いアミノ酸の順、置換数の多いコドンの順、で出そうと思うのだが。
C# 2.0 では厳しいって、というよりも面倒。ひたすら面倒。

LINQ を知ってるのでよけい面倒。
ということで、ついにでた Visual Studio 2008 Beta2 を使う。
わざわざ各地の匿名メソッドをラムダ式に直してみる新し物好きな馬鹿。[続きを読む]

卒業研究 #7

#418
using System.Collections.Generic;

コドン使用頻度 (codon usage) を求める作戦に移行。

アミノ酸 20 こに三つ組コドンが 4*4*4 = 64 こが割り当てられていて、つまり、アミノ酸 1 こにコドンが複数割り当てられていることがある。単純に考えれば、そのうちのどれを使ってもいいはずなのだが、使用頻度はけっこうばらついているようだ。
以上説明終わり。


教科書的にはコドン表が 16*4 の 2 次元表になっているわけだが、ここでは 64*1 の辞書にする。
問題はキーのコドンで、どう表すかですね。

とりあえずファイルをバイト列で読み込んでるし、コドンもバイト列で、の方向でいく。
つまり、Dictionary<byte[], int> 。

一応 IEqualityComparer<byte[]> も実装しておく。

int hash = 0;
foreach (byte value in obj)
{
  hash <<= 8;
  hash += value;
}

としておけば、{0x65, 0x84, 0x71} のハッシュ値は 0x00658471 となる。


結果 :

44.49 sec, 244.29 MB

出力 (一部) :

M ATG 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00 1.00
I ATA 0.19 0.19 0.19 0.18 0.19 0.18 0.21 0.21 0.30 0.27 0.30 0.25
I ATT 0.33 0.32 0.32 0.32 0.32 0.32 0.31 0.31 0.44 0.36 0.37 0.39
I ATC 0.48 0.49 0.50 0.50 0.50 0.49 0.48 0.48 0.26 0.37 0.33 0.36

第 1 列がアミノ酸、第 2 列がコドン、それ以降の 12 列が codon usage 。
ちなみに M はメチオニン、I はイソロイシン。

卒業研究 #6

#417
using System.Collections.Generic;
using System.Collections.ObjectModel;

前回 :

ファイルからバイト列を読み込み、そのラッパークラス (FastaDocument) を用意。 FastaDocument クラスは KeyedCollection<string, ISequence> を継承。配列名をキーとする。あとはインデックス操作で動的にプロパティ値を取得。


今回 :

CDS から 9,850 遺伝子のアラインメント (224MB) に変えて実行。ファイル名が遺伝子 ID 、各配列 (1 ファイルに 12 個) の名前が種名となっている。

結果 :

4.71 sec, 241.24 MB

とりあえず Dictionary<string, FastaDocument> に叩き込んでおく。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。