26022016 chemoinformatics
今まではMMPはIDのペアと活性値の差分だけ持っていれば良かったので適当なスキーマのデータベースに放り込んでいたんだけど、Monitoring the Progression of Structure–Activity Relationship Information during Lead Optimizationというアッツい論文を読んでから、うちでもMMSとかSARM_disc_scoreとか出したいと思っていたが、やる気が無いので放置していた。
最近データベースを作りなおす機会があったので構造も新しく考えてみた。
MMPはCore(共通骨格)とペアのそれぞれのフラグメントに分けられるのでone-to-manyで割とシンプルにかけるんだけど、それぞれのFragmentからのbackrefをmmpsにしちゃうとエラーが出るので変なナンバリングしないといけなかった。
from sqlalchemy import Column, String, DateTime, Float, Integer, ForeignKey from sqlalchemy.orm import relationship from MMP.database import Base class MMP(Base): __tablename__ = "mmps" id = Column(Integer, primary_key=True) core_id = Column(Integer, ForeignKey('cores.id')) fragment1_id = Column(Integer, ForeignKey('fragments.id')) fragment2_id = Column(Integer, ForeignKey('fragments.id')) activity_id = Column(Integer, ForeignKey('activities.id')) compound1_id = Column(String(6)) compound2_id = Column(String(6)) fragment1 = relationship("Fragment", foreign_keys='MMP.fragment1_id', backref="mmps1") fragment2 = relationship("Fragment", foreign_keys='MMP.fragment2_id', backref="mmps2") def __init__(self, **kargs): self.compound1_id = kargs["compound1_id"] self.compound2_id = kargs["compound2_id"] @property def mmp_id(self): return "{}-{}".format(self.compound1_id, self.compund2_id) class Core(Base): __tablename__ = "cores" id = Column(Integer, primary_key=True) mmps = relationship("MMP", uselist=True, backref="core") smiles_string = Column(String(255), unique=True) def __init__(self, **kargs): self.smiles_string = kargs["smi"] class Fragment(Base): __tablename__ = "fragments" id = Column(Integer, primary_key=True) smiles_string = Column(String(255), unique=True) def __init__(self, **kargs): self.smiles_string = kargs["smi"]
実際のデータはMMPクラスと活性クラスをひも付けてあるのでSARM_disc_scoreとかMMSの抽出とか簡単になるはず。






告白 (双葉文庫) (双葉文庫 み 21-1)
母性 (新潮文庫)
つまみリスト
ばらかもん 1 (ガンガンコミックスONLINE)
七夕の国 (1) (ビッグコミックス)
犬夜叉 (1) (少年サンデーコミックス)
PLUTO (1) (ビッグコミックス)
もやしもん(1) (イブニングKC)
次世代シークエンサーDRY解析教本 (細胞工学別冊)
深層学習: Deep Learning


