アカウント名:
パスワード:
こういうネタを利用して,プログラマー向けの生物学教室とか(ん?バイオインフォマティクス教室かな)をやってくれる人はいないものでしょうかね
オライリーの本 [oreilly.co.jp]にしてもそうなんですが、バイオインフォマティクスの解説書って基本的にバイオ研究者(でコンピュータの初心者)向けのものばっかりなんですよね、確かに。逆のパターンの本があったら誰か教えてほしいですね。 バイオインフォマティクスに使われるよ
バイオインフォマティクスに使われるような生化学のことをプログラマが理解するのに比べたら、理解すべきことの分量は確かにその方が少ないようには思いますし
一応バイオインフォマティクスを本業にしている者ですが、 この業界では寧ろ、 コンピューターで使われるような情報科学のことを生化学屋が 理解するのに比べたらプログラマが理解すべき生化学の分量は 確かにその方が少ない、と思われている気がします。 情報科学をちょっとかじったことのある人だったら造作もない ようなことを人の力で頑張っていたりするので、ちょっとくらい 生物が分かって、プログラムが書
#!/bin/perl # no1.pl # BIP2003 問題1解答用スクリプト # http://contest.genome.ad.jp/ # 使い方 no1.pl ファイル名 # use strict; my ($i,$j,$k,@i,@j,@k); my (
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
身近な人の偉大さは半減する -- あるアレゲ人
勉強会とかないかな (スコア:0)
Re:勉強会とかないかな (スコア:2, 興味深い)
オライリーの本 [oreilly.co.jp]にしてもそうなんですが、バイオインフォマティクスの解説書って基本的にバイオ研究者(でコンピュータの初心者)向けのものばっかりなんですよね、確かに。逆のパターンの本があったら誰か教えてほしいですね。
バイオインフォマティクスに使われるよ
Re:勉強会とかないかな (スコア:1, 参考になる)
一応バイオインフォマティクスを本業にしている者ですが、
この業界では寧ろ、
コンピューターで使われるような情報科学のことを生化学屋が
理解するのに比べたらプログラマが理解すべき生化学の分量は
確かにその方が少ない、と思われている気がします。
情報科学をちょっとかじったことのある人だったら造作もない
ようなことを人の力で頑張っていたりするので、ちょっとくらい
生物が分かって、プログラムが書
Re:勉強会とかないかな (スコア:1)
面白そうだな、とは思います。
しかし、本格的に生化学の勉強をするのはちょっと…と躊躇してしまうのも事実です。(『Newton』ぐらいは読んでますが(^^;))
例えば、『問題 4』は生化学に関する知識は不要なわけですよね。ところが逆に、『問題 3』なんかは「ハイブリダイズって何よ?」となってしまうわけで…。
(あまりに基本的な用語なのか、Googleで調べても分からない。『二本鎖を形成』? 対にするってことかな?)
実際のところ命題を解くに当たって、「ATGCとはなんぞや?」などという基本的なことすら、必ずしも知る必要はないのではないでしょうか?
『問題 3』なんかはデータ数から見るに、回答の長さが5960を超えるはずはないと思うのですが、どの程度を想定すればいいのか分かりません。また、『誤差』がどういうレベルなのかも、SBH法を知らないために想像がつきません。
生化学に関する知識は高校生レベルで事足りる、ぐらいに歩み寄ってもらえると、参加者も増えると思うのですが…無理かなぁ。
Re:勉強会とかないかな (スコア:2, 参考になる)
問題1 (例は全て架空のものです)
ATGCの4文字からなる文字列があります。
遺伝子が含まれる領域の左側にプロモータ配列という配列があると、
プロモータ配列の種類に応じた特定の条件で遺伝子が働くように
なります。(例: プロモータAは細胞が熱にさらされると、
右にある遺伝子が働くようになる)
プロモーター配列は一般には、遺伝子の左側にだいたい存在し、
遺伝子自体とどれくらい離れているかは種類によります。
同じ種類でも距離は一定しているとは限りません。
遺伝子Aの場合
ATCGGGCCTGGATGCGTTGCCCGGTTAAAGCATGGTGCAAACCCACTATCGAT
|<--プロモータA->| |<--遺伝子A-------------->|
遺伝子Bの場合
CCAGGCCTGGATGCGTTGCCCAACTCCCATGCTCCATCCGATACAACTGCGAT
|<--プロモータA->| |<--遺伝子B-------------->|
この場合プロモータ配列A は GGCCTGGATGCGTTGCC という
配列な訳ですが、この配列がどんなものか分からないときに、
たくさん与えられた配列から共通の配列を見つけて
プロモータ配列を推測してくださいというのが問題です。
なーんだ、サーチを繰り返せば、という話もありますが、
プロモーター配列はちょっとずつ違っても働くので、
GGCCTGGATGCGTTGCC から一文字変更して
GGCCTGGTTGCGTTGCC でもやっぱり働きます。
つまり、この問題では 10文字以上でかつ30%くらいまでの
違いを許容しつつ(だいたい)共通しているプロモーター配列
を求めてください。ということです。
つづく...かなぁ。
# 他力本願なのでハンドル
質問です. (スコア:0)
正規表現を使って試してみようかな.正規表現メーリングリスト [bug.org]に投げてみようかしらん.
Re:質問です. (スコア:1)
Re:質問です. (スコア:1)
Re:補足 (スコア:1)
#最初に s/T/U/g すればすむだけかと。
Re:補足 (スコア:1)
○ s/U/T/g
Re:勉強会とかないかな (スコア:0)
モチーフという言葉は使いますね。
おおざっぱに言えば「良く出てくるパターン」のような
ものかと思います。>モチーフ
サンプル作ってみたんですが・・・ (スコア:0)
解説を元にperlでスクリプトを書いてみました.長さが10の文字列で調べたのですが,DNA-sequence-A.dna では'.TT.AT.AAA'という文字列で10個,DNA-sequence-B.dna では'T...TATATA', 'TTAT.A..AT' で12個にしかマッチしません.以下のようなスクリプトなんですが,何か考え方が間違っているのでしょうか?
このスレッドをまだ見ている人はいるかなぁ,そっちが問題かも
#!/bin/perl
# no1.pl
# BIP2003 問題1解答用スクリプト
# http://contest.genome.ad.jp/
# 使い方 no1.pl ファイル名
#
use strict;
my ($i,$j,$k,@i,@j,@k);
my (
Re:サンプル作ってみたんですが・・・ (スコア:1)
正規表現だけで、この問題を解くのはかなり無理があるような気
がします。
変異はモチーフのある特定の場所に集中して起こるのではなく
て、偏りはありますがモチーフ配列全体で起こります。
たとえば、モチーフが5個あったとして
ABCDEFGHIJKLMNOPQ
1GACCTGAATGCGTTGCC
2GGCCTGGATGCGTTGTC
3GGCCTGGCTGCGTGCC
4GGTCTGCATGCATTGCC
5GGCATGCATACGTTGCC
GGCCTGXATGCGTTGCC コンセンサス配列
G...TG..T.C.T.... 正規表現
それぞれの配列は、コンセンサス配列
(変異が起こる前の配列といったらよいのでしょうか)から30%も変化
していないのですが、 変異がいろいろな場所で起きているため正
規表現ですべての配列を検索しようとすると.が多くなってしまって
他のモチーフではない部分も引っかかってしまいます。
さらに、配列3のn列のように変異は置換だけでなく塩基がなくなる
deletionや逆に塩基が挿入されるinsertionなどもあります。
これが起こるとそれから後はこの正規表現ではすべて.になってしまいます。
また、g列のように変異が置きやすい場所もあって、このような場所
に変異があってもモチーフ配列である確率はあまり下がりません。
このようなことを表現するには、正規表現だけでは役不足で
オートマトンに確率をたしたような隠れマルコフモデルなどがよく使われています。
これらについては、
「バイオインフォマティクス-確率モデルによる遺伝子配列解析-」(医学出版)などが詳しいです。
ただ、モチーフ検索などは研究の歴史も長く人数も多いのでよい
成果を出すのはかなり大変そうです。
Re:サンプル作ってみたんですが・・・ (スコア:0)
Re:勉強会とかないかな (スコア:1, 興味深い)
Perlで言うと、$a に対して getsouhosa($a)という配列は $a の相補鎖と呼ばれていて、$a, getsouhosa($a) はくっついて 二本鎖を形成します。
sub getsouhosa{
my $s = shift;
$s =~ tr/ATGC/TACG/;
return join("",reverse(split(//, $s)));
}
SBH法はわりとまだ理論段階の話なので「誤差」のレベルに関して
はまだ未知数だと思います。またまたPerlで書きますが、 誤差がないSBH法の結果は
$moto="ATCCTTCGCGGGCCATGCCG"; # 元の配列の例
$k = 10; # 定数(今回は10)
for($i=0;$i+$k $p=substr($moto,$i,$k);
$h{$p}=1;
$h{getsouhosa($p)}=1;
}
print join("\n",sort(keys %h));
このプログラムの出力結果になります。結果だけを見て
$moto に何が代入されていたか分かれば良いわけです。
誤差有りの場合には、文字列を数パーセント変化させて
返すaddgosa関数でも作って、上のプログラムの
$h{$p}=1;
$h{getsouhosa($p)}=1;
の部分を
$h{addgosa($p)}=1;
$h{addgosa(getsouhosa($p))}=1;
に置き換えれば良いです。
Re:勉強会とかないかな (スコア:1)
subsutitutionでいいんですかね。
insertionとdeletionがなければ、結構簡単そうなんだけど。
DNAのハイブリダイスのエネルギーを求める式があれば
insertionとdeletionとsubsutitutionが起こる比率が求められそう
どっかに転がってないですかね。
Re:勉強会とかないかな (スコア:0)