未完成
SciTouch
まずは下準備
ChEMBLさんのChEMBL_13を使いデータをインポートしてみる。
まずは、Management StudioでBingo対応データベースにアクセスして、ChEMBLデータの入れ物テーブルを作成する。
CREATE TABLE chem (
ID nvarchar(30),
MOL nvarchar(max),
CONSTRAINT pk_chem primary key(ID)
);
次に、Bingo付属のツール bingo.ImportSDF(ストアドプロシージャ)を使って
exec bingo.ImportSDF 'chem', 'MOL', 'C:\bingo\src\chembl_13.sdf.gz', 'chembl_id ID' *sdfファイルは圧縮しててもok
と、「C:\bingo\src\chembl_13.sdf.gz」のプロパティ値<chembl_id>をchemテーブルのIDに対応させ、
sdfのmol情報はchemテーブルのMOLに入れます。

2.8GHz 8GBな仮想マシンで、ChEMBL13の1,142,974件を30分でインポート完了。PKがないと7,8分で完了。サイズは7.1GB
どうやらPrimary keyは数値型であるのが必要みたい。
主キーのnvarchar(30)という文字列型が原因なのか、入った文字列 CHEMBL123456 が原因なのか不明だが、上記のテーブル様式だと
エラーが発生する。主キーを数値の連番にすると正しくMOLのインデックスが作成された。
なので、上記chemテーブル構成を修正
主キーを外す:alter table chem drop constraint pk_chem
列名の変更:sp_rename 'chem.ID' , 'chembl_id' , 'COLUMN'
列の追加:alter table chem add ID bigint
新規ID列に連番を振る:
UPDATE chem
set ID=tmp.idx
FROM (
SELECT
chem.chembl_id,
ROW_NUMBER() OVER(ORDER BY chem.chembl_id) AS idx
FROM
chem
) as tmp
WHERE
chem.chembl_id=tmp.chembl_id
ID列をNULL不許可に:alter table chem alter column ID bigint not null
ID列に主キー制約を:alter table chem add constraint pk_chem primary key(ID)
このように変更を加えて、MOLのインデックスを作成します。
exec bingo.CreateMoleculeIndex 'chem', 'ID', 'MOL';
*構造式検索を行ううえで必須なそうな。大抵はfingerprintを作ってどうこうするのかな?って思うのだが、ここはそうではないみたい。
もしMOLに異常なデータがれば、列挙してくれます。
Record with ID=16857 wasn't added to the index: stereocenters: stereo types of the opposite bonds mismatch
Record with ID=23516 wasn't added to the index: stereocenters: stereo types of the opposite bonds mismatch
Record with ID=23574 wasn't added to the index: stereocenters: one bond up, one bond down -- indefinite case
な感じで。
下記SQL文でも同様なMOLの検証が可能です。
select * from bingo.CheckMoleculeTable('chem','id','mol');
を実行して状態確認。しかしこれもChEMBL_13だと大きすぎるのかエラーが生じた。expressをやめてstandardにしたらすんなり。
まぁー件数が膨大ですからexpressの枠には入りきらないみたい。standardの時のインストールはexpressと同じ。
以後standardでの作業記録です。
MOL形式を収めているので構造式画像を同じテーブルに格納させてみた。構造式取り込み
加え、各種の記述子も格納させてみた。記述子演算
さらに試作中
SciTouch/Tools