<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>bioinformatics / Drkcore</title><link>http://blog.kzfmix.com/entry/bioinformatics</link><description>Programming, Music, Snowboarding</description><atom:link href="http://blog.kzfmix.com/rss/" rel="self"></atom:link><language>ja</language><lastBuildDate>Thu, 01 Dec 2011 21:29:27 +0900</lastBuildDate><item><title>PDBデータに化合物情報を追記して一つのファイルにしたい</title><link>http://blog.kzfmix.com/entry/1322735693</link><description>&lt;p&gt;mol形式(sdf形式)のデータだと化合物の区切りが$$$$なので、化合物を追加したい場合は何も考えずにファイルに追記するだけでいいのでよいですね。&lt;/p&gt;
&lt;p&gt;PDB形式のデータにsdf形式の化合物情報をマージしたいんだけど、いい方法ないかなぁと調べてみたところmol2でOKだった。&lt;/p&gt;
&lt;p&gt;両方mol2形式にして&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;cat compounds.mol2 &amp;gt;&amp;gt; protein_data.mol2
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;ってやればマージできる。&lt;/p&gt;
&lt;p&gt;どういう用途を想定しているかっていうと&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;ある適当な部分構造(substructure)を持っている化合物の複合体結晶構造に、同じsubstructureをもつ別の化合物のコンフォマーを発生しつつ複合体のsubstructureの座標でalignする&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;つまり&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://openbabel.org/wiki/Obconformer"&gt;obconformer&lt;/a&gt;でコンフォマーを発生&lt;/li&gt;
&lt;li&gt;複合体結晶構造のリガンドの部分構造を使って&lt;a href="http://openbabel.org/wiki/Obfit"&gt;obfit&lt;/a&gt;でコンフォマーをアライン&lt;/li&gt;
&lt;li&gt;一つのファイルにまとめてドッキングモデル完成&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;みたいなことをやりたかったわけです。こういうのはファイルが2つに分かれてるとユーザーのヒトとか使いにくいしどういう計算したのかわからなくなっちゃうからね。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/059615450X/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41snkPEzLrL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Bioinformatics Programming Using Python&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Mitchell L. Model&lt;br /&gt;
    Oreilly &amp; Associates Inc / 5119円 ( 2009-12-23 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Thu, 01 Dec 2011 21:29:27 +0900</pubDate><category>chemoinformatics</category><category>bioinformatics</category></item><item><title>Half Sphere Exposureという指標</title><link>http://blog.kzfmix.com/entry/1322130729</link><description>&lt;p&gt;&lt;a href="http://biopython.org/wiki/Main_Page"&gt;biopython&lt;/a&gt;のMLに&lt;strong&gt;「蛋白内部に埋没している残基をどうやってけいさんすんの？」&lt;/strong&gt;っていう質問が流れてて、&lt;a href="http://en.wikipedia.org/wiki/Half_sphere_exposure"&gt;HSE&lt;/a&gt;っていう指標が実装されているのを知った。&lt;/p&gt;
&lt;p&gt;HSEってのはCalphaとCbetaのベクトルと直交する平面で球を切ってUpとDownの半球のことで、その中に他の残基のCalphaとCbetaが幾つあるか数えるという単純なCNっていう指標で溶媒接触表面積の代わりに使えるらしい。&lt;/p&gt;
&lt;p&gt;この指標って例えば（潜在的な）リガンド結合部位の予測に使えたりするんだろうか？&lt;/p&gt;
&lt;p&gt;PPI阻害剤なんかのターゲット部位予測に使えたら面白いかもねと思った。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/1584889292/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51qqBnSZqEL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Python for Bioinformatics (Chapman &amp; Hall/CRC Mathematical &amp; Computational Biology)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Sebastian Bassi&lt;br /&gt;
    Chapman and Hall/CRC / 5857円 ( 2009-10-07 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Thu, 24 Nov 2011 19:32:42 +0900</pubDate><category>chemoinformatics</category><category>bioinformatics</category></item><item><title>pubmedのidをdoiに変換する</title><link>http://blog.kzfmix.com/entry/1305285843</link><description>&lt;p&gt;pubmedのidからdoiを調べたい。&lt;/p&gt;
&lt;p&gt;BeautifulSoupでXMLをパースするのが良いのだが、ソース見たらげんなりした(preってなんやねん)。というわけで、MEDLINE形式のデータから正規表現でdoiを抜き出してます。&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt; 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/env python&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;urllib2&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="nn"&gt;sys&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;pmid2doi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pmid&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
   &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;http://www.ncbi.nlm.nih.gov/pubmed/&lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt;?dopt=MEDLINE&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;pmid&lt;/span&gt;
   &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;AID - (10.\d+/.+?) \[doi\]&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;urllib2&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;urlopen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
       &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;error: &lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;__main__&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="n"&gt;pmid2doi&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
   &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
       &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;usage: &lt;/span&gt;&lt;span class="si"&gt;%s&lt;/span&gt;&lt;span class="s"&gt; [pmid]&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;コマンドラインから使う場合には&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="nv"&gt;$&lt;/span&gt; &lt;span class="nv"&gt;pmid2doi&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="mi"&gt;20053000&lt;/span&gt;
&lt;span class="mf"&gt;10.1021&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;ci900416a&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/059615450X/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41snkPEzLrL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Bioinformatics Programming Using Python&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Mitchell L. Model&lt;br /&gt;
    Oreilly &amp; Associates Inc / 5119円 ( 2009-12-23 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;</description><pubDate>Fri, 13 May 2011 20:36:20 +0900</pubDate><category>bioinformatics</category><category>Python</category></item><item><title>Rによるバイオインフォマティクスデータ解析　第2版 -Bioconductorを用いたゲノムスケールのデータマイニング</title><link>http://blog.kzfmix.com/entry/1295382472</link><description>&lt;p&gt;献本ありがとうございます&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4320057082/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/415L8Nf6JxL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Rによるバイオインフォマティクスデータ解析　第2版 －Bioconductorを用いたゲノムスケールのデータマイニング－&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    樋口 千洋&lt;br /&gt;
    共立出版 / 4830円 ( 2011-01-08 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;内容はバイオインフォマティクスに限らずに割と広い内容をカバーした感じで、クックブックと逆引きの中間的なスタイルと言えば良いのだろうか？&lt;/p&gt;
&lt;p&gt;Rのインストールから基本的な操作は（大体どの本にもあるように）載っていて&lt;/p&gt;
&lt;p&gt;データマイニングとしては&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PCA &lt;/li&gt;
&lt;li&gt;ICA&lt;/li&gt;
&lt;li&gt;PLS&lt;/li&gt;
&lt;li&gt;MDS&lt;/li&gt;
&lt;li&gt;SPE&lt;/li&gt;
&lt;li&gt;k-means,Fuzzy cmeans&lt;/li&gt;
&lt;li&gt;spectral clustering&lt;/li&gt;
&lt;li&gt;NMF&lt;/li&gt;
&lt;li&gt;SOM&lt;/li&gt;
&lt;li&gt;decision tree&lt;/li&gt;
&lt;li&gt;kNN&lt;/li&gt;
&lt;li&gt;SVM&lt;/li&gt;
&lt;li&gt;RF&lt;/li&gt;
&lt;li&gt;LASSO&lt;/li&gt;
&lt;li&gt;MARS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;がサンプルコードとともに簡潔に説明されている。&lt;/p&gt;
&lt;p&gt;8章はバイオ系データの解析、チップとか。odesolveを利用したシミュレーションのサンプルもあって、&lt;a href="http://www.bioconductor.org/packages/release/bioc/html/SBMLR.html"&gt;SBMLR&lt;/a&gt;は面白そうだなぁと思った。メカニズムがどうなっているのかはモデルと実験系の不一致をよく突き詰めて考えることでしかきちんとした理解は得られないと思っている。&lt;/p&gt;
&lt;p&gt;最後のほうの章は統合環境、データベースの連携、サーバー構築あたりの話。&lt;/p&gt;
&lt;p&gt;あと、twitteRを使って生体組織名をつぶやくとその組織の図が返ってくるという例が載ってた。ちなみに&lt;a href="http://blog.kzfmix.com/entry/1278155703"&gt;RでもPit&lt;/a&gt;があります。&lt;/p&gt;</description><pubDate>Wed, 19 Jan 2011 05:28:53 +0900</pubDate><category>chemoinformatics</category><category>R</category><category>bioinformatics</category></item><item><title>芳泉閣でゆったりしませんか？</title><link>http://blog.kzfmix.com/entry/1283946515</link><description>&lt;p&gt;熱海でだらだらと温泉につかりながら、コード書いたり書かなかったりという場を設けました。キーワードはchemoinformatics,bioinformatics,R,Python,Rubyで製薬企業でコード書いているヒト多めです。僕はFlaskいじるかopenbabelのMCS実装かなんかをする予定です(でもいい日本酒がゲットできたら飲んでるかも)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2010.10.29-30&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.hosen.co.jp/"&gt;芳泉閣&lt;/a&gt;@熱海&lt;/li&gt;
&lt;li&gt;一泊二日で10500くらい&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;まだ何人か分の空きがありますので興味があれば私にメールかtwitterでメッセージを下さい。金曜から土曜にかけてという日程です。&lt;/p&gt;

&lt;p&gt;今のとこの参加者&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://twitter.com/kzfm"&gt;kzfm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;zgmfx20a&lt;/li&gt;
&lt;li&gt;bohohu&lt;/li&gt;
&lt;li&gt;garuby&lt;/li&gt;
&lt;li&gt;shirahakase&lt;/li&gt;
&lt;li&gt;hiro_h&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Mon, 25 Oct 2010 05:50:12 +0900</pubDate><category>chemoinformatics</category><category>bioinformatics</category></item><item><title>MacBookにBLAST+をいれた</title><link>http://blog.kzfmix.com/entry/1271915121</link><description>&lt;p&gt;今日は子守で会社を休んでいるのでPRMLのサンプリングの章でもじっくり読んでやるかという有意義そうな予定を組んでいたのだけど、なぜかmacbookにblast入れたりしていた。&lt;/p&gt;

&lt;p&gt;しかもportで入れたblastが古くてあれやなぁと。調べたら今時はBLAST+(ブラプラって読むの？)らしくて、Biopythonのほうも&lt;a href="http://biopython.org/DIST/docs/tutorial/Tutorial.html#htoc85"&gt;対応しているらしい&lt;/a&gt;のでこっち入れなあかんやろと、何が目的だっけ？そもそもblast入れる目的なんだっけ的なよくあるパターンに。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Web&amp;amp;PAGE_TYPE=BlastDocs&amp;amp;DOC_TYPE=Download"&gt;NCBIのダウンロードサイト&lt;/a&gt;からMac OSX用のをダウンロードすればよい。&lt;/p&gt;

&lt;p&gt;/usr/loca/ncbi/binにインストールされるのでパスを切っておく。&lt;/p&gt;

&lt;p&gt;コマンドは引数も含めていろいろ変更されていて、blastallのpオプションで指定していたのがそのままコマンドになっている。formatdbがmakeblastdbになっていたりとか。&lt;/p&gt;

&lt;p&gt;引数も短縮形じゃなくて、意味がわかるようなものに変更されている。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;blastp -query test.fasta -db pdbaa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;あと、ホームディレクトリでblast実行すると以下のエラーが出るんだけど、最初どこに問題があるんだかわからなかった。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;terminate called after throwing an instance of 'ncbi::CSeqDBException'
  what():  NCBI C++ Exception:
    "/am/ncbiapdata/release/blast/src/2.2.23/IntelMAC-universal/c++/GCC401-
ReleaseMT--IntelMAC-universal/../src/objtools/blast/seqdb_reader
/seqdbimpl.cpp", line 412: Error: OID not found

Abort trap
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;で、dbのファイルを絶対パスで指定してやると解決した。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;blastp -query test.fasta -db /Users/kzfm/blast/db/pdbaa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ただしデータベースが見つからないときのエラーは&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;BLAST Database error: No alias or index file found for protein database
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;こんなんだからなぁ。&lt;/p&gt;

&lt;p&gt;なんなんだろうね。バグ？&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/059615450X/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41M5s3NnhjL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Bioinformatics Programming Using Python&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Mitchell L. Model &lt;br /&gt;
Oreilly &amp; Associates Inc / ￥ 5,915 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;
</description><pubDate>Thu, 22 Apr 2010 15:10:16 +0900</pubDate><category>bioinformatics</category><category>macbook</category></item><item><title>ゲノム言語ATGC</title><link>http://blog.kzfmix.com/entry/1230452181</link><description>&lt;p&gt;プログラムとして実行できるfasta形式のプログラミング言語を作ってみた。いちおうチューリング完全(なはず)。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;HELLO_WORLD
ccggaccgcg gggcaccgcc ggcggaccgc cgccggaccg cccggcgacc gccgccccac
cgcccgccca ccgcggggga ccgccgcccc accgccgccg gaccgccgcc ggaccgccgg
cgcaccgcgg cgggaaccga cacatccata ccacagaacc caaaa
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;これはatgcというコマンドで解釈して実行します。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ bin/atgc hello_world.fasta 
Hello world!
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ゲノム的にGCリッチなほうがいいだろうということで0と1にg,cをそれぞれ割り当てて数字を表現するようにしてる。exitコマンドには終止コドンを割り当てようかとも思ったが、なんとなくaaaにしてみた(polyA)。&lt;/p&gt;

&lt;p&gt;しかも（というか当たり前だけど）&lt;a href="http://blast.ncbi.nlm.nih.gov/Blast.cgi"&gt;blastでホモロジーサーチがかけられる&lt;/a&gt;し、multifastaにしておけばソース管理もできるうえに、データベース化してインデックスはっておけば、NCBIのツール群でコマンド一発で取り出せる。&lt;/p&gt;

&lt;p&gt;ただ今回作ったHELLO_WORLDの配列はblastnだといい感じにヒットしなくて悲しかったので、blastxかけたらブラックコットンウッドからなんかひっかかった。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;gb|ABK94795.1|  unknown [Populus trichocarpa]
Length=229

 Score = 33.5 bits (75),  Expect = 5.9
 Identities = 14/21 (66%), Positives = 15/21 (71%), Gaps = 0/21 (0%)
 Frame = +1

Query  100  GPPPDRRRTAAGTDTSIPQNP  162
            GPPPDRRRT  GT  S P +P
Sbjct  209  GPPPDRRRTRQGTTKSEPASP  229
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://www.kzfmix.com/pub/compiler.rb"&gt;コンパイラ側のソース&lt;/a&gt;はこんな感じでほとんどWhitespaceだ。&lt;/p&gt;

&lt;p&gt;VMとかは特にいじってないのでEsotericの本を参照のこと。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4839927847/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/41vb2HHFNJL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
原 悠 &lt;br /&gt;
毎日コミュニケーションズ / ￥ 2,814 ()&lt;br /&gt;
在庫あり。&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;VMを使った中間言語方式の強力さを理解した。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:24:59 +0900</pubDate><category>bioinformatics</category><category>Ruby</category></item><item><title>python2.5でBioPythonを使う</title><link>http://blog.kzfmix.com/entry/1203684203</link><description>&lt;p&gt;python2.5に入れる場合はNumericがsourceforgeになかったり、MxTextToolsの古いバージョンを入れたりとか、いろいろとあれなので、&lt;a href="http://biopython.org/wiki/Download"&gt;ドキュメント&lt;/a&gt;読みましょうってことです。&lt;/p&gt;

&lt;p&gt;で、RCSBからgz圧縮されたpdbファイルをとりにいってBioPythonで扱うサンプル&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;import urllib2, StringIO, gzip
from Bio.PDB.PDBParser import PDBParser

def fetch_pdb(id):
    url = 'http://www.rcsb.org/pdb/files/%s.pdb.gz' % id
    content = urllib2.urlopen(url).read()
    sf = StringIO.StringIO(content)
    return gzip.GzipFile(fileobj=sf)

if __name__ == "__main__":
    p=PDBParser(PERMISSIVE=1)
    s=p.get_structure("1bgw", fetch_pdb("1bgw"))

    for model in s.get_list():
        for chain in model.get_list():
            for residue in chain.get_list():
                if residue.has_id("CA"):
                    ca_atom=residue["CA"]
                    print ca_atom.get_coord()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ところで、製薬系のドラッグデザインっていうかchemoinformaticsなSoftwareはpythonで拡張できるものが多いんだけれども、その割にはpythonでガリガリ書くよっていうヒトはあんまし見かけたことないんですよね。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:23:48 +0900</pubDate><category>chemoinformatics</category><category>bioinformatics</category><category>Python</category></item><item><title>Bioinformatics Programming in Python</title><link>http://blog.kzfmix.com/entry/1203813725</link><description>&lt;p&gt;Bioinformatics Programming in Python: A Practical Course for Beginners という書籍が出るらしい。&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/3527320946/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/213f6eq6u3L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;Bioinformatics Programming in Python: A Practical Course for Beginners&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
Ruediger-Marcus Flaig &lt;br /&gt;
Wiley-VCH / ￥ 7,525 ()&lt;br /&gt;
通常1～3週間以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://as.wiley.com/WileyCDA/WileyTitle/productCd-3527320946,descCd-tableOfContents.html"&gt;TOC&lt;/a&gt;見る限りはあんま欲しいとは思わないけど、他にもpythonでbioinformaticsという本が&lt;a href="http://www.amazon.co.jp/s/ref=nb_ss_fb?__mk_ja_JP=%83J%83%5E%83J%83i&amp;amp;url=search-alias%3Denglish-books&amp;amp;field-keywords=bioinformatics+python&amp;amp;Go.x=0&amp;amp;Go.y=0&amp;amp;Go=Go"&gt;2冊くらいは出るらしい&lt;/a&gt;ので、そっちのほうに期待。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:23:21 +0900</pubDate><category>bioinformatics</category><category>Python</category></item><item><title>pythonでHTTPのgzipデータを読み込む</title><link>http://blog.kzfmix.com/entry/1187087731</link><description>&lt;p&gt;&lt;a href="http://boscoh.com/protein/fetching-pdb-files-remotely-in-pure-python-code"&gt;Fetching PDB files remotely in pure Python code&lt;/a&gt;を見つけて、
数行でpdbのファイルをフェッチできるなんて&lt;strong&gt;やるなRCSBとpythonのコンボ&lt;/strong&gt;とか思ったんだけど、コメントに「生でフェッチすんのは環境に悪いでよ」とか書いてあった。&lt;/p&gt;

&lt;p&gt;確かにPDB界ではgzip圧縮したpdbファイルをとってきてローカルで展開すんのが昔からのナラワシだよなと、試しにgzとかZをくっつけてwgetしてみるとその通りのファイルがダウンロードできた。をを。&lt;/p&gt;

&lt;p&gt;で、おーこれは、数行スクリプトにgzipモジュールかませばいいだけなんじゃなかろうかと思て書き書きしてみたが、&lt;a href="http://www.python.jp/doc/2.4/lib/module-gzip.html"&gt;これってファイルしかとれないのかな&lt;/a&gt;?&lt;/p&gt;

&lt;p&gt;zlibならどうだといじってみたけど、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import urllib
&amp;gt;&amp;gt;&amp;gt; import zlib
&amp;gt;&amp;gt;&amp;gt; url = 'http://www.rcsb.org/pdb/files/1ab6.pdb.gz'
&amp;gt;&amp;gt;&amp;gt; text = urllib.urlopen(url).read()
&amp;gt;&amp;gt;&amp;gt; zlib.decompress(text)
Traceback (most recent call last):
  File "&amp;lt;stdin&amp;gt;", line 1, in &amp;lt;module&amp;gt;
zlib.error: Error -3 while decompressing data: incorrect header check
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;なんかヘッダがーっておこられた。やっぱgzipでなんとかすべきなのか?
ともうちっと追いかけたら&lt;a href="http://www.void.in/wiki/Python/HTTP"&gt;GzipFileのほうを使えばよいらしい&lt;/a&gt;ことに辿りついた。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import gzip, StringIO, urllib
&amp;gt;&amp;gt;&amp;gt; url = 'http://www.rcsb.org/pdb/files/1ab6.pdb.gz'
&amp;gt;&amp;gt;&amp;gt; content = urllib.urlopen(url).read()
&amp;gt;&amp;gt;&amp;gt; sf = StringIO.StringIO(content)
&amp;gt;&amp;gt;&amp;gt; dec = gzip.GzipFile(fileobj=sf)
&amp;gt;&amp;gt;&amp;gt; data = dec.read()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ちと長いがこれで読めた。というわけで、&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; import urllib, StringIO, gzip
&amp;gt;&amp;gt;&amp;gt; def fetch_pdb(id):
...     url = 'http://www.rcsb.org/pdb/files/%s.pdb.gz' % id
...     content = urllib.urlopen(url).read()
...     sf = StringIO.StringIO(content)
...     return gzip.GzipFile(fileobj=sf).read()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;ちょっと長くなったけど帯域にやさしい。&lt;/p&gt;
</description><pubDate>Tue, 12 Jan 2010 11:06:36 +0900</pubDate><category>chemoinformatics</category><category>bioinformatics</category><category>Python</category></item></channel></rss>
