ゴミのやま

完全自分向け雑記

Linux mint 導入時にやったことメモ

Ubuntuくんが激重なのでLinux mint (Cinnamon)に乗り換えたのメモ。完全自分用

とりあえず結論

めっちゃ快適なのでさっさとやればよかった

とりあえずアップデート

インストール後表示されるFirst Stepsに従ってドライバをインストールしたりアップデートしたりする

キーバインド周り

いつものキーバインドじゃないと作業効率が落ちるのでまずここから設定する。

Synapseを入れる

アプリ名で検索できる便利なランチャー。これがないとストレスでしぬ

Xmodmapを入れる

CapsをデリートにしたりVim風のカーソル移動を実現するために。詳細はそのうち書くかも。これによりタイプ速度が2倍になる(当社比)。独自のkeymapを有効化する前にCapsをbackspaceに割当ておく

setxkbmap -option caps:backspace
連打スピードを上げる

キー押しっぱのデフォルトの認識は遅いので。

xset r rate 220 40

ネットワーク・クラウド周り

Dropboxを入れる

いつも使ってるので。

Chromiumを入れる

デフォルトのFirefoxは好かない

Telegramを入れる

仕事の連絡用

Nixnote2を入れる

Evernote用フリークライアント

SSH周りの整備

>>||
apt-get install openssh-server
|

グラフィック周り

Redshiftを有効にする

目がつかれるのでRedshiftをAutostartにする

Plankを入れる

Mac風ランチャー

sshfを入れる

計算機サーバをローカルにマウントしてファイルのやり取りを容易に

エディタ&プログラミング周り

PyCharm & CLion

使い慣れたPythonおよびC用エディタ

Neovimを入れる

GUIVimエディタがほしかったので

terminatorを入れる

デフォルトのターミナルより高機能

Miniconda&PIPを入れる

Python環境作り

Pymolを入れる

生体分子表示用


こうしてみると入れる物たくさんありますね。。。。その他適宜追加します

LGAのコンパイルでSegmentation faultが出る

タンパク質のアラインメント計算ソフトウェアのLGAでコンパイルはできるのだが, Segmentation faultで実行できない問題の対応法。
LGA - Protein Structure Comparison Facility

[解決策]ulimit -s unlimitedする

どうもコアダンプの容量が制限されているのが原因らしい。

ulimit -s unlimited
cd ./SRC
make -f Makefile.linux=x86=64

Pymol 見た目を調整する

気付き次第, 順次追加予定。。。

DSSコマンド

水素結合および主鎖の構造を用いて二次構造情報を自動的に追加する。これにより二次構造情報に基づいた色分けなどが可能になる。

https://pymolwiki.org/index.php/Dss

 

デフォルトの設定を変更する(背景など)

pymolrcに常時設定したいコマンドを書き込む。起動時に自動的に読み込まれる。以下は私のpymolrcの設定。

https://pymolwiki.org/index.php/Pymolrc

bg_color white
hide ribbon,all
show cartoon,all
show cell

ボックスを表示

周期的境界条件の設定がなければ表示できない(当たり前だが)

show cell

自動で"いい感じ"の見た目にする

presetを使う。publishがすき

https://pymolwiki.org/index.php/Preset

 

高Qualityなきれいなイメージを出力する

以下に従って操作する。かんたん。

https://pymolwiki.org/index.php/Publication_Quality_Images

 

 

Poisson-Boltzmann方程式を導出する

目的

  • 分子シミュレーションでよく使われるPossion-Boltzmann方程式を導出する。間違ってたら教えて下さい。

出発

まずPossion equationから出発する


∇(ε(r)∇φ(r)) = -4πρ(r)

ε(r):点rにおける誘電率; φ(r):点rにおける静電ポテンシャル; ρ(r):点rにおける電荷密度

この式はある点における電荷分布ρ(r)がわかれば, ある点におけるポテンシャルが計算できることを示す。

電荷分布をBoltzmann分布で表す

特定の場所におけるイオンの濃度がBoltzmann分布によって示されるとする。つまり,


c_i(r) = c_0exp(-\displaystyle \frac{z_ieφ(r)}{K_BT})

c_i(r):イオンiのrにおける濃度; c_0:バルクのイオン濃度; z_i:イオンiの価数; z_iイオンの価数; e電荷素量;φ_i(r): 場所rにおけるイオンiのポテンシャル; K_B:ボルツマン定数; T:温度;

以上のイオンの濃度分布にイオンの価数および電気素量をかけることで, イオンiの点rにおける電荷分布が得られる。


ρ_i(r) = z_iec_0exp(-\displaystyle \frac{z_ieφ(r)}{K_BT})

溶質から来る電荷分布ρ_{solute}(r)および全イオンからの寄与を考慮することで,

\displaystyle{
ρ(r) = ρ_{solute}(r) + \sum_{i=1}^n ρ_i(r) = ρ_{solute}(r) + \sum_{i=1}^n z_iec_0exp(-\displaystyle \frac{z_ieφ(r)}{K_BT})
}

これを前述のPossion equationに代入することでPossion-Boltzmann equationを得る。

\displaystyle{
∇(ε(r)∇φ(r)) = -4π(ρ_{solute}(r) + \sum_{i=1}^n z_iec_0exp(-\displaystyle \frac{z_ieφ(r)}{K_BT}))
}

Poission-Boltzmann equationを線形化する

 z_ieφ_i(r) << K_BTのとき, 一次の項までマクローリン展開すると

\displaystyle{
exp(-\displaystyle \frac{z_ieφ(r)}{K_BT}) = 1 - \frac{z_ieφ(r)}{K_BT}
}

これをでPossion-Boltzmann equationに代入して

\displaystyle{
∇(ε(r)∇φ(r)) = -4π(ρ_{solute}(r) + \sum_{i=1}^n z_iec_0 - c_0 \sum_{i=1}^n \frac{z_i^2e^2φ(r)}{K_BT})
}

系内のイオンの電荷の和が0であるなら\displaystyle{\sum_{i=1}^n z_iec_0 = 0}であるので, 以下のような線形化されたPoisson-Boltzman方程式を得る

\displaystyle{
∇(ε(r)∇φ(r)) = -4π(ρ_{solute}(r) - \frac{c_0e^2}{K_BT} \sum_{i=1}^n {z_i^2φ(r)})
}

デバイ長

線形化されたPoisson-Boltzman方程式において誘電率が場所によらず一定値εであるとすると, 前述の方程式の末項を変形することでデバイ長を得る。デバイ長以下では電場は遮蔽されない。

参考:

www.cchem.berkeley.edu

 

得たPoission-Boltzmann方程式を解く

modernな解法は調べていないが, 差分法による直感的アプローチは以下のサイトがとてもわかりやすかった。

teamcoil.sp.u-tokai.ac.jp

先に導出した式は線形化されているので以下のステップにより簡単に解くことができる(疑問:線形化されてなかったらどうするんでしょうね。。。?)

  1. グリッドを切る
  2. 境界条件を設定
  3. 端から順にポテンシャルを解いていく
  4. 各点のポテンシャルの値がself-consistentになるまで反復する

実際の分子シミュレーションでは・・・

ステップごとにポテンシャルを求めていくのは超ハイコストなので行われていないらしい。MM-PBSAなどでリガンド相互作用の計算に使われている。というわけで次はMM-PBSAについて書く(予定)

PythonのPandasで一列ずつ足す

やりたいこと

a = []

for i in range(0,n):

    a.append("hogehoge")

 

みたいなことをpandasでやりたい

解決策

一旦python標準配列で作ってからpd.DataFrameに変換する方法が早いらしい

qiita.com

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と同様にリモート側にアクセス権管理を委ねるため, アクセスできるようになるとのこと。

 

ちゃんちゃん