Depict をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
構造式検索とは関係ないのだが、構造式の画像を作ってみる。
便利なのはURL変数としてエンコードされたsmilesを渡して、画...
URLの最大長は約2000文字。低分子化合物ならまぁー大丈夫...
大体こんなイメージ。
#ref(2012y11m25d_012436528.png,nolink);
他方、リソースが十分なら、予めMOLからイメージを作成してお...
データベースのLobから取り出して表示するのもあるだろう。
まぁーここではsmilesから動的に構造式を描く方式で考えてみた
***URL変数 [#ed608e1d]
smilesには"="を含むものがあるので、smiles表記を16進数に変...
その変換関数は、
-php5.xの場合:
echo &color(green){bin2hex};("c1ccccc1");
-python2.xの場合:
print 'c1ccccc1'.&color(green){encode('hex')};
-postgres関数の場合:
select &color(green){encode};('c1ccccc1'::bytea,'hex');
得られる文字はどれも「6331636363636331」となる。っで、こ...
-php5.4以降
&color(green){hex2bin};("6331636363636331");
-php5.3以前
&color(green){pack};("H*", "6331636363636331" );
-python2.x
print '6331636363636331'.&color(green){decode('hex')};
とする。
他、URL変数としては画面のサイズなどだろう。これは+とかで...
***描画エンジン [#ac6aa58c]
■RDKitの場合
#code(python){{
#!/usr/bin/python
import Image,ImageDraw
import cStringIO
import sys
sys.path.append('/opt/RDKit')
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
def randgradient(smiles):
mol = AllChem.MolFromSmiles(smiles)
AllChem.Compute2DCoords(mol)
img = Draw.MolToImage(mol,size=(200,250))
f = cStringIO.StringIO()
img.save(f, "PNG")
print "Content-type: image/png\n"
f.seek(0)
print f.read()
if __name__ == "__main__":
if 'QUERY_STRING' in os.environ:
smiles = os.environ['QUERY_STRING'].decode('hex')
randgradient(smiles)
else:
print "Content-type: text/html\n\n"
print "non"
}}
な感じで。ここでは画像サイズは固定の200x250だが、もしサイ...
あと、smilesを得ても変換できないときのお詫び画像を表示と...
っで、化合物ブラウズ画面をDHTMLX(http://dhtmlx.com/)さ...
#ref(2012y11m25d_214027882.png,nolink)
こうなる。画像サイズの調整などがあるだろうけど、タイル表...
***データベースと連携して構造式を描く [#se9f9017]
URLにデータベースに収めたキーを入れるとブラウザ上で構造式...
データベースの構築は [[RDKit/Cartridge]]、[[RDKit/Cartrid...
ここでは [[RDKit/Cartridge/PubChem]] を収めたデータベース...
基本的には RDKit を使うのだが、python で制御するのでapach...
ここでは
#code(nonumber){{
[root@c ~]# cat /etc/httpd/conf.d/wsgi.conf
WSGIScriptAlias /depict /var/www/wsgi/depict.wsgi
[root@c ~]#
}}
として、httpdを再起動して、構造式を描くpythonスクリプトを...
#code(python){{
import psycopg2
import sys, cgi
import cStringIO
sys.path.append('/opt/RDKit')
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
def application(environ, start_response):
connector = psycopg2.connect(host="localhost", databa...
cursor = connector.cursor()
query = environ.get('QUERY_STRING')
if len(query) == 0:
query = '1'
elif len(query) > 30:
query = '1'
cursor.execute("""select rdkit_smiles from pubchem wh...
result = cursor.fetchall()
for row in result:
smi = row[0]
cursor.close()
connector.close()
mol = AllChem.MolFromSmiles(smi)
AllChem.Compute2DCoords(mol)
img = Draw.MolToImage(mol,size=(200,250))
f = cStringIO.StringIO()
img.save(f, "PNG")
status = '200 OK'
f.seek(0)
output = f.read()
response_headers = [('Content-type', 'image/png'),
('Content-Length', str(len(output...
start_response(status, response_headers)
return [output]
}}
これで
&ref(2016y10m12d_231026056.png,nolink);
と打てば、
&ref(2016y10m12d_231010593.png,nolink);
と表示される
終了行:
構造式検索とは関係ないのだが、構造式の画像を作ってみる。
便利なのはURL変数としてエンコードされたsmilesを渡して、画...
URLの最大長は約2000文字。低分子化合物ならまぁー大丈夫...
大体こんなイメージ。
#ref(2012y11m25d_012436528.png,nolink);
他方、リソースが十分なら、予めMOLからイメージを作成してお...
データベースのLobから取り出して表示するのもあるだろう。
まぁーここではsmilesから動的に構造式を描く方式で考えてみた
***URL変数 [#ed608e1d]
smilesには"="を含むものがあるので、smiles表記を16進数に変...
その変換関数は、
-php5.xの場合:
echo &color(green){bin2hex};("c1ccccc1");
-python2.xの場合:
print 'c1ccccc1'.&color(green){encode('hex')};
-postgres関数の場合:
select &color(green){encode};('c1ccccc1'::bytea,'hex');
得られる文字はどれも「6331636363636331」となる。っで、こ...
-php5.4以降
&color(green){hex2bin};("6331636363636331");
-php5.3以前
&color(green){pack};("H*", "6331636363636331" );
-python2.x
print '6331636363636331'.&color(green){decode('hex')};
とする。
他、URL変数としては画面のサイズなどだろう。これは+とかで...
***描画エンジン [#ac6aa58c]
■RDKitの場合
#code(python){{
#!/usr/bin/python
import Image,ImageDraw
import cStringIO
import sys
sys.path.append('/opt/RDKit')
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
def randgradient(smiles):
mol = AllChem.MolFromSmiles(smiles)
AllChem.Compute2DCoords(mol)
img = Draw.MolToImage(mol,size=(200,250))
f = cStringIO.StringIO()
img.save(f, "PNG")
print "Content-type: image/png\n"
f.seek(0)
print f.read()
if __name__ == "__main__":
if 'QUERY_STRING' in os.environ:
smiles = os.environ['QUERY_STRING'].decode('hex')
randgradient(smiles)
else:
print "Content-type: text/html\n\n"
print "non"
}}
な感じで。ここでは画像サイズは固定の200x250だが、もしサイ...
あと、smilesを得ても変換できないときのお詫び画像を表示と...
っで、化合物ブラウズ画面をDHTMLX(http://dhtmlx.com/)さ...
#ref(2012y11m25d_214027882.png,nolink)
こうなる。画像サイズの調整などがあるだろうけど、タイル表...
***データベースと連携して構造式を描く [#se9f9017]
URLにデータベースに収めたキーを入れるとブラウザ上で構造式...
データベースの構築は [[RDKit/Cartridge]]、[[RDKit/Cartrid...
ここでは [[RDKit/Cartridge/PubChem]] を収めたデータベース...
基本的には RDKit を使うのだが、python で制御するのでapach...
ここでは
#code(nonumber){{
[root@c ~]# cat /etc/httpd/conf.d/wsgi.conf
WSGIScriptAlias /depict /var/www/wsgi/depict.wsgi
[root@c ~]#
}}
として、httpdを再起動して、構造式を描くpythonスクリプトを...
#code(python){{
import psycopg2
import sys, cgi
import cStringIO
sys.path.append('/opt/RDKit')
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
def application(environ, start_response):
connector = psycopg2.connect(host="localhost", databa...
cursor = connector.cursor()
query = environ.get('QUERY_STRING')
if len(query) == 0:
query = '1'
elif len(query) > 30:
query = '1'
cursor.execute("""select rdkit_smiles from pubchem wh...
result = cursor.fetchall()
for row in result:
smi = row[0]
cursor.close()
connector.close()
mol = AllChem.MolFromSmiles(smi)
AllChem.Compute2DCoords(mol)
img = Draw.MolToImage(mol,size=(200,250))
f = cStringIO.StringIO()
img.save(f, "PNG")
status = '200 OK'
f.seek(0)
output = f.read()
response_headers = [('Content-type', 'image/png'),
('Content-Length', str(len(output...
start_response(status, response_headers)
return [output]
}}
これで
&ref(2016y10m12d_231026056.png,nolink);
と打てば、
&ref(2016y10m12d_231010593.png,nolink);
と表示される
ページ名:
1