ゴミのやま

完全自分向け雑記

SMARTSってなんやねん(化学)

参考:

magattaca.hatenablog.com

www.molsis.co.jp

要は

SMILES

  • 分子の二次元構造を文字列で記述
  • ワイルドカード表記はできない(多分…?)
  • 一つの化合物構造に対して複数のsmilesがありえる(一対一対応するものはcanonical SMILESと呼ばれる)

SMARTS

  • SMILESを検索クエリ用に拡張
  • ワイルドカードで表記できる
  • 同一記法でもSMILESとは意味が異なる可能性あり

「SMILE語」の文法を学ぶ

語学を学ぶには最低限の文法理解は必要, ということで以下のテーブルをざっくり理解。

原子表記(atomic primitives)

SMARTS Atomic Primitives
Symbol Symbol name Atomic property requirements Default
* wildcard any atom (no default)
a aromatic aromatic (no default)
A aliphatic aliphatic (no default)
D<n> degree <n> explicit connections exactly one
H<n> total-H-count <n> attached hydrogens exactly one1
h<n> implicit-H-count <n> implicit hydrogens at least one
R<n> ring membership in <n> SSSR rings any ring atom
r<n> ring size in smallest SSSR ring of size <n> any ring atom2
v<n> valence total bond order <n> exactly one2
X<n> connectivity <n> total connections exactly one2
x<n> ring connectivity <n> total ring connections at least one2
- <n> negative charge -<n> charge -1 charge (-- is -2, etc)
+<n> positive charge +<n> formal charge +1 charge (++ is +2, etc)
#n atomic number atomic number <n> (no default)2
@ chirality anticlockwise anticlockwise, default class2
@@ chirality clockwise clockwise, default class2
@<c><n> chirality chiral class <c> chirality <n> (nodefault)
@<c><n>? chiral or unspec chirality <c><n> or unspecified (no default)
<n> atomic mass explicit atomic mass unspecified mass

原子表記の例

C

aliphatic carbon atom

c

aromatic carbon atom

a

aromatic atom

[#6]

carbon atom

[Ca]

calcium atom

[++]

atom with a +2 charge

 

[R]

atom in any ring

[D3]

atom with 3 explicit bonds (implicit H's don't count)

[X3]

atom with 3 total bonds (includes implicit H's)

[v3]

atom with bond orders totaling 3 (includes implicit H's)

C[C@H](F)O

match chirality (H-F-O anticlockwise viewed from C)

C[C@?H](F)O

matches if chirality is as specified or is not specified

 

結合表記(bond primitive)

こっちは原子表記より少ないので楽

Symbol Atomic property requirements
- single bond (aliphatic)
/ directional bond "up"1
\ directional bond "down"1
/? directional bond "up or unspecified"
\? directional bond "down or unspecified"
= double bond
# triple bond
: aromatic bond
~ any bond (wildcard)
@ any ring bond1

結合表記の例:

C any aliphatic carbon
cc any pair of attached aromatic carbons
c:c aromatic carbons joined by an aromatic bond
c-c aromatic carbons joined by a single bond (e.g. biphenyl)

省略されると

 

引用元:

www.daylight.com

 

SMARTS官能基当てクイズ

Q:

  1. [CX4]
  2. [CX3]=[OX1]
  3. [NX3][CX3](=[OX1])[#6]

A:

  1. 4つ結合がある脂肪族炭素
    ⇒ アルキル基
  2. (3つ結合がある脂肪族炭素)二重結合(結合を一つもつ酸素)
    ⇒ カルボニル基
  3. (3つ結合がある窒素)(3つ結合がある炭素)(=二重結合(結合を一つもつ酸素))(原子番号6の原子)
    ⇒ アミド基

あとは適宜わからんのが出てきたら学ぶ。

引用:

www.daylight.com

SMARTSを可視化する

大量に可視化したい場合はRDkitなどを使う必要があるのだろうが, ひとまず以下のサイトでお手軽に可視化できる。

https://smartsview.zbh.uni-hamburg.de

sshfsでマウントしたフォルダが"You do not have the permissions necessary to view the contents of mounted directory"と出て開けない

Mac OSX MojaveでSshfsでマウントしたフォルダがパーミッションエラーで開けない

You do not have the permissions necessary to view the contents of mounted directory.

というメッセージによりsshfsが開けなくなったのでその対処法

 

対策

-o defer_permissions

をつけてsshfsをマウントする

参考:

github.com

 

なんでこれでなおるねん?

上記リンクのbfleischer兄貴によると

  • sshではリモート側がフォルダのアクセス権を管理している
  • sshfsではmac側とリモート側の両方でアクセス権を管理している。ゆえにmac側からはリモート側のアクセス権が見えないので読み込みエラーが起きる
  • -o defer_permissions
    をつけることによりsshと同様にリモート側にアクセス権管理を委ねるため, アクセスできるようになるとのこと。

 

ちゃんちゃん

 

Jupyter Notebookの導入メモ

pipでインストール

qiita.com

拡張機能を入れる

www.pynote.inf

とりあえず上のサイトから適当につっこむ。vimmerなので"jupyter-vim-binding"は必須。

 

リモートのスクリプトをいじる

  1. sshfsでマウントしていじる方法。この場合, スクリプトはローカルで実行される。sshfsはそれ以外にも便利なのでスパコンとファイルのやり取りを頻繁に行うシミュレーション屋はぜひ入れたい。リモートにあるデータをJupyter Notebookで扱うには [計算化学Wiki]
  2. リモートサーバでjupyterを動かす方法。
    この場合, スクリプトはリモートサーバ上で実行される。重い計算などはこっち。

qiita.com

t検定ってなんやねん

まず仮設をたてる

参考:

best-biostatistics.com

 

帰無仮説(Null hypothesis):差がない

対立仮説(Alternative hypothesis):差がある

帰無仮説の否定:差がないわけではない⇒差がある

 

t検定する

  1. 帰無仮説を立てる
    (差がないのではという仮設)
  2. p値を算出し有意水準(0.05にすることが多い)以下であることを示す
    (差がない可能性は非常に小さい)
  3. 帰無仮説を棄却
    (差がないわけではなさそう)
  4. 対立仮説を採択
    (差がある)

t-検定について

参考

best-biostatistics.com

 

母集団の分布

確率密度関数 (probablity density function)

母集団が分散δ2, 平均μの正規分布のとき, n個のサンプルを取り出した分布はt分布となる(確率密度関数f(t)は以下のwikiを参考)

ja.wikipedia.org

標本数

  • データが1種類:1群
  • データが2種類:2群

1群のT検定におけるNull hypothesis:(データと任意の値の差分が0と違いがない)

1群のT検定におけるNull hypothesis:(データ1とデータ2の差分が0と違いがない)

自由度

  • サンプル数 - 群 

t値 

  • 正規分布におけるz tableのように, 標準化したt分布?(自信なし)
  • 標準化されている(?)のでt tableから任意の確率区間を与えるt値が用意に計算できる
  • t分布の形は自由度による

t値とp値について - Qiita

Jupyter Notebookってなんやねん

目的

同僚がJupyter Notebookを使っていたのだが何が便利なのかわからないので全体像を掴む

参考:

ここを参考にしました

blog.tsurubee.tech

要は

  • Pythonスクリプト内部にLatexやmatplotlibを用いた色々な形式でメモができたり
  • それをチームとシェアできたりして便利

ということらしい。イメージとしてはインタラクティブPython実行環境+Evernoteって感じですかね(同僚に聞いたところチームとのシェア機能は使ってないらしい)

次にどうする

  • 調べたところ皆が便利便利言っているし, Pythonスクリプトを書く機会は多いのでとりあえず使ってみようかと思います
  • gitのようにリモートでアクセスできるらしい。慣れてきたらやる

    starpentagon.net

 

 

Pymol 便利なコマンド集

目的

自分用によく使うコマンドを整理しておく


ファイルのリストを得る

cmd.get_names()

ファイルの名前を書きかえる

cmd.set_name("fileA", "fileB"))

[応用]"filename A"を含むファイル名のみ抽出し, 一部を書き換える

for a in [file for file in cmd.get_names()  if "filenameA " in file]: cmd.set_name(a, a.replace("filenameA","filenameB"))

オブジェクトの色を変える

color blue, objectname*

GUIで選択された(=enable)なオブジェクトだけmesh表示にする

show mesh, enabled

背景色変更

bg_color silver