アカウント名:
パスワード:
こういうネタを利用して,プログラマー向けの生物学教室とか(ん?バイオインフォマティクス教室かな)をやってくれる人はいないものでしょうかね
オライリーの本 [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 (@mask,$line,@seqs,@base,%prom,%result); # 長さ10のプロモーターで,30%の違いを作り出すためのマスク # @mask にデータを格納 # for $i (0..1023){ $j = 0; map{$j += $_} split //,sprintf "%b",$i; push @mask,sprintf "%010b",$i if ($j ==3); } # ファイルを読み込んで,DNA列を配列 @seqs に格納 # {$/ = undef; $line = ;} $line =~ s/\n//g; @seqs = ($line =~ m/([ATGC]{2,})/g); # @seqsの最初のデータを使って,プロモータ候補を作成 # 先頭から1文字づつずらしながら10文字の文字列を @baseに格納 # for (0..590){ push @base , substr $seqs[0],$_,10; } # @baseに格納したデータに30%の違いをつける. # 10文字の文字列のうちの3個を '.' に変更. # 結果をハッシュ%promに格納.ハッシュにしているのは, # 同じデータを複数作成しないため. # for (@base){ @i = split //; for (@mask){ @j = split //; for (0..9){ $k[$_] = ($j[$_])? '.' : $i[$_]; } $prom{join "",@k} = 1; } } # @seqsに格納したDNAデータに %prom データがあるかどうか # チェック @seqs内の何個のデータにマッチしたか, # マッチした数をキーにしてハッシュ%resultに登録 # for $i (sort keys %prom){ $j = 0; for $k (@seqs){ $j += ($k =~ m/$i/); } push @{$result{$j}},$i; } # %resultに格納したデータを,@seqsにマッチした数が # 大きいものから,表示 # for $i (sort {$b $a} keys %result){ print "MATCH ",$i,"\n"; map{print $_,"\n"}(@{$result{$i}}); }
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds
勉強会とかないかな (スコア:0)
Re:勉強会とかないかな (スコア:2, 興味深い)
オライリーの本 [oreilly.co.jp]にしてもそうなんですが、バイオインフォマティクスの解説書って基本的にバイオ研究者(でコンピュータの初心者)向けのものばっかりなんですよね、確かに。逆のパターンの本があったら誰か教えてほしいですね。
バイオインフォマティクスに使われるよ
Re:勉強会とかないかな (スコア:1, 参考になる)
一応バイオインフォマティクスを本業にしている者ですが、
この業界では寧ろ、
コンピューターで使われるような情報科学のことを生化学屋が
理解するのに比べたらプログラマが理解すべき生化学の分量は
確かにその方が少ない、と思われている気がします。
情報科学をちょっとかじったことのある人だったら造作もない
ようなことを人の力で頑張っていたりするので、ちょっとくらい
生物が分かって、プログラムが書
Re:勉強会とかないかな (スコア:1)
面白そうだな、とは思います。
しかし、本格的に生化学の勉強をするのはちょっと…と躊躇してしまうのも事実です。(『Newton』ぐらいは読んでますが(^^;))
例えば、『問題 4』は生化学に関する知識は不要なわけですよね。ところが逆に、『問題 3』なんかは「ハイブリダイズって何よ?」となってしまうわけで…。
(あまりに基本的な用語なのか、Googleで調べても分からない。『二本鎖を形成』? 対にするってことかな?)
実際のところ命題を解くに当たって
Re:勉強会とかないかな (スコア:2, 参考になる)
問題1 (例は全て架空のものです)
ATGCの4文字からなる文字列があります。
遺伝子が含まれる領域の左側にプロモータ配列という配列があると、
プロモータ配列の種類に応じた特定の条件で遺伝子が働くように
なります。(例: プロモータAは細胞が熱にさらされると、
右にある遺伝子が働くようになる)
プロモーター配列は一般には、遺伝子の左側にだいたい存在し、
遺伝子自体とどれくらい離れているかは種類によります。
同じ種類でも距離は一定して
サンプル作ってみたんですが・・・ (スコア: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 (@mask,$line,@seqs,@base,%prom,%result);
# 長さ10のプロモーターで,30%の違いを作り出すためのマスク
# @mask にデータを格納
#
for $i (0..1023){
$j = 0;
map{$j += $_} split //,sprintf "%b",$i;
push @mask,sprintf "%010b",$i if ($j ==3);
}
# ファイルを読み込んで,DNA列を配列 @seqs に格納
#
{$/ = undef; $line = ;}
$line =~ s/\n//g;
@seqs = ($line =~ m/([ATGC]{2,})/g);
# @seqsの最初のデータを使って,プロモータ候補を作成
# 先頭から1文字づつずらしながら10文字の文字列を @baseに格納
#
for (0..590){
push @base , substr $seqs[0],$_,10;
}
# @baseに格納したデータに30%の違いをつける.
# 10文字の文字列のうちの3個を '.' に変更.
# 結果をハッシュ%promに格納.ハッシュにしているのは,
# 同じデータを複数作成しないため.
#
for (@base){
@i = split //;
for (@mask){
@j = split //;
for (0..9){
$k[$_] = ($j[$_])? '.' : $i[$_];
}
$prom{join "",@k} = 1;
}
}
# @seqsに格納したDNAデータに %prom データがあるかどうか
# チェック @seqs内の何個のデータにマッチしたか,
# マッチした数をキーにしてハッシュ%resultに登録
#
for $i (sort keys %prom){
$j = 0;
for $k (@seqs){
$j += ($k =~ m/$i/);
}
push @{$result{$j}},$i;
}
# %resultに格納したデータを,@seqsにマッチした数が
# 大きいものから,表示
#
for $i (sort {$b $a} keys %result){
print "MATCH ",$i,"\n";
map{print $_,"\n"}(@{$result{$i}});
}
Re:サンプル作ってみたんですが・・・ (スコア:1)
正規表現だけで、この問題を解くのはかなり無理があるような気
がします。
変異はモチーフのある特定の場所に集中して起こるのではなく
て、偏りはありますがモチーフ配列全体で起こります。
たとえば、モチーフが5個あったとして
ABCDEFGHIJKLMNOPQ
1GACCTGAATGCGTTGCC
2GGCCTGGATGCGTTGTC
3GGCCTGGCTGCGTGCC
4GGTCTGCATGCATTGCC
5GGCATGCATACGTTGCC
GGCCTGXATGCGTTGCC コンセンサス配列
G...TG..T.C.T.... 正規表現
それぞれの配列は、コンセンサス配列
(変異が起こる前の配列といったらよいのでしょうか)から30%も変化
していないのですが、 変異がいろいろな場所で起きているため正
規表現ですべての配列を検索しようとすると.が多くなってしまって
他のモチーフではない部分も引っかかってしまいます。
さらに、配列3のn列のように変異は置換だけでなく塩基がなくなる
deletionや逆に塩基が挿入されるinsertionなどもあります。
これが起こるとそれから後はこの正規表現ではすべて.になってしまいます。
また、g列のように変異が置きやすい場所もあって、このような場所
に変異があってもモチーフ配列である確率はあまり下がりません。
このようなことを表現するには、正規表現だけでは役不足で
オートマトンに確率をたしたような隠れマルコフモデルなどがよく使われています。
これらについては、
「バイオインフォマティクス-確率モデルによる遺伝子配列解析-」(医学出版)などが詳しいです。
ただ、モチーフ検索などは研究の歴史も長く人数も多いのでよい
成果を出すのはかなり大変そうです。
Re:サンプル作ってみたんですが・・・ (スコア:0)