RCSB PDBのサイトからPDB(.cif)をまとめて取得する簡易script

Grüezi wohl,

 

 一年位前まで頑張って勉強してたKNIME x PDBですが、PDB connectorが仕様変更になってます。いざ使おうって時にこれだから...

 

 というわけで、めっちゃ簡易ですがpython scriptを置いておきます。

from IPython.display import HTML
from pypdb import *
import time
from Bio.PDB import PDBList
from tqdm import tqdm

# 検索用のkeywordsを定義

q = input('keywords? ')

# PDB IDのリストを取得、ID数を表示
pdb_ids = Query(q).search()
print('the number of PDB IDs are ' + str(len(pdb_ids)))

# directoryを作成

pdbl = PDBList()
dir_name = q + '/'

# リストをdownloadする? yes/no

download = input('Download PDB files? y/n ')
if download == 'y':
for pdb_id in tqdm(pdb_ids, position=0):
pdbl.retrieve_pdb_file(pdb_id, pdir=dir_name)
time.sleep(10)
print('fertig')

 

上記のスクリプトをTextEditか何かのアプリケーションにコピペして、PDB.pyみたいな名前で保存します。

それをterminalからpythonで実行します。

 

参考にしたのはこちらのpypdbっていうライブラリと、


github.comgithub.com


こちらのbiopythonの使い方です。


bi.biopapyrus.jpbi.biopapyrus.jp


 

pythonの方がネットに落ちてる情報量が多いから、不測の事態に陥ってもなんとかはなりそう...

 あとはadvanced searchとかに対応したり、リガンドの抜き出しとかしたいかな。

調べたい本題からどんどん遠ざかっていく...

 

Anyway, have a nice time. Bis Bald. tschüß.

使いたい時には忘れているTerminalコマンドメモ

お題の通りで使う時にいつも忘れてしまうTerminalコマンドをメモ.随時更新.

Shell編

rm -r directoryname

-rオプションがないとdirectoryは消去できない.

~/.Trash/* でゴミ箱を空に出来る.

 

~

= /Users/username

 

ls -a

.DS_storeや.zshrcなどの隠しファイルを含むリストを表示する.

Finder上で表示を切り替えしたいときはcommand + shift + .

 

sudo purge

メモリを解放. 

 

top

アクティビティモニタのようにアクティブなプロセスを表示.

qで停止.

S (shift + s)で追加コマンド.kill 入力後にPIDの指定でプロセスを終了.

 

find . -name '.DS_Store' -type f -ls -delete

directory以下にある隠しファイルの.DS_Storeを消去する.

下記コマンドでエイリアスを作成すると,deldsだけでdirectory以下の.DS_Storeファイルを削除できるようになる.

alias delds = 'find . -name ".DS_Store" -type f -ls -delete'

 

source ~/.zshrc

ファイルに書かれているコードを実行するコマンド.

zshrcを少しいじった後に、terminalに反映させたい時のコマンド.

もちろん他のrcファイルでも使えると思うけど,他であまり使った記憶はなし

Git編

git diff --name-only

branchの差分をファイル名のみで表示. 

 

git diff --stat

branchの差分を簡易表示.

 

Docker

docker exec -it containername bash

bashってつけ忘れる.ぶっちゃけ意味もしらんので後で調べる.

 

 

Jupyter

jupyter nbconvert --to python filename.ipynb

jupyter notebookを.pyファイルに変換.

素人がMacで始めるプログラミングっぽいこと①Terminal便利設定編

MacBookAir2012でKNIMEを動かすのは重すぎてストレスに感じてきた。

そろそろやらねばと思ってPythonを勉強し始めたので、環境構築の備忘録を随時更新する。

PCやiPadを買い換える時はクリーンから始めたい派なので、調べ直しは最低限にしたい。

というわけでまずはTerminal周辺。

 

zshの導入と設定

brewzshとその他便利機能をインストール。

qiita.com

Catalinaからはzshがデフォルトらしい.
実際に使いと,補完機能,候補表示,シンタックスハイライトの3つの便利機能なしは最早ありえない。

SublimeとiTermのインストール

datawokagaku.com

 

PATHを通さないとSublimeは使えなかった。

datawokagaku.com

 

iTermは確かに見た目が綺麗になる

datawokagaku.com

 

Terminalのプロンプトを短くする

qiita.com

短くするだけでなく 最初に改行を入れておくと、個人的にはzshの可読性が上がった。Window一つあたりの情報量は減るけど、あんま気にしてないのでよし。

 

Gitのbranchとstatusを表示しておく

suwaru.tokyo

これのおかげでやっとGitを少し理解した。

個人でGitするだけならBranchを切って、更新ファイルをgit addでリストし、git commit -m "xxx"でチェックポイントを作る。問題なければmasterとmergeする。

colaboratorとonlineでgitするのがGitHubっていうのが今の所の理解です。

 

 

以上、適宜追加していきます。

 

ネットワークのない環境でKnimeにNodeを入れるには

会社でKnimeを使ったりする場合、会社の構造式やデータを流出させないためにネットワークに接続されていない環境でデータ処理するケースもあったりします。

Knimeのインストールファイルは公式HPからダウンロード出来るので、そのファイルを移してインストールすればいいんですが、Extensionsはどこでしょう?

 

どうしたらいいかというと、こことか

www.knime.com

ここから

nodepit.com

対応するversionのNodeをZip fileでダウンロードしてきます。

 

次にFile > Preferences > Instal/Update > Available Software sitesへと進みます。Add > Archiveからダウンロードしたファイルを選択し、適当な名前をつけてAddし、最後にApply and Closeします。

f:id:keetane:20200721214015p:plain

 

あとはFile > Install KNIME Extensionsからいつも通りInstallするだけです。

KnimeからExtensionsを直接インストールしたり、NodePitを使ったり出来ない場合にはこんな感じです。

端書き

夢を見た。

スイスから帰ってくる途中の夢だった。

現実にはもう日本で仕事を再開してるし、実際のシーンとは全然関係なかった。

向こうに未練がない訳ではないけれど、見るからには何かしら頭の隅っこの方で考えてる虫がいるんだろう。

日本に帰ってきてからもモヤモヤしてる日々が少し続いているので、言葉にして頭ん中の整理を手伝ってあげたい。

 

 

縁あって、某有名製薬会社のマネージャーの人と少しだけ話す機会があったことを思い出した。

確かスコットランド出身で、学位取得後はどっかでポスドクをした後に企業に就職、そして転職で現職だったと思う。

旦那さんは高校の教師だと言っていた。自分が先にスイスに来た後もなかなか職が見つからず、当時の半年くらい前にやっと就職が決まったところだと、拙い英語の私にも話してくれた。子供の話はしなかった。生活が変わると大変だよね、って話をした。

 

皆さん優しいのと、日本企業の留学制度なんて知らないので、ポスドクしてるっていうとうちのオープンポジション紹介しようか?とか時々聞いてもらえる。外資はリストラが日常茶飯事というけれど、新しい人を受け入れるために常に<10%くらいはオープンポジションを作っておくらしい。リストラ自体も別に気軽にする訳ではもちろんないだろう。部署がなくなるなら話は別だが、その人がいなくなっても仕事が続く場合はリクルートコストも発生する。プロジェクトの進捗には余計なタスクでしかなく、メンバーが能力を最大限発揮してくれた方が話は当然スムーズだ。

 

外部からのプロジェクトリーダー採用も結構盛んだったりする。

例えば新規技術なんかがわかりやすいけど、自社にない技術チームを組織する時に経験ある人をよそから引っ張ってきて仕事を思いっきり任せてしまう。化学で言えば、単なる(と言ったら聞こえが悪いかもしれないが)SARのプロジェクトリーダーは社内の生え抜き研究員がapply出来ない、外部でのポスドク経験者限定なんてのも増えてきてるらしい。自社にないアプローチや人材へのアンテナがものすごい。仮にプロジェクトがポシャった後のキャリアはどうなるんだろう。即クビなんてことはさすがにないと思うけど、そういうのももっと聞いておけばよかった。

中国も近年はこの流れに追随しているらしい。有名どころで言えば、WuxiなんかはポスドクでJACS, ACIE数報持っててやっと研究員ポストが手に入るくらいなんだとか。

 

スイスやドイツは共通機器、いわゆるコファシリティが充実している。

技術員、いわゆるテクニシャンも多く、給与は日本よりも高めの印象がある。というか、日本は研究職全体の給与が低く、専門性が軽視されている印象を受ける。ちなみに技術員といってもPh. D.を持っている人も結構いる。単にルーチンワークをこなす要員ではなく、技術課題を解決したり、最適な方法を提案するための知識や経験が求められることもある。NMRやLCMS、X rayなんかはわかりやすい。他にも研究インフラ周り以外でもPh. D.を持ってる人が多かった。

Ph. D.以外は認めないとか、もっと日本もPh. D.を増やそうということが言いたい訳ではない。

Ph. D.は専門的知識・技能を持つ免許や保証のようなものであり、その有無で職務と給与が明確に分かれる。ただそれだけのもので、熟練のテクニシャンから見たら新米のPh. D.なんて、という話はもちろんよくある。肝心なのは、それでもPh. D.、もっというとポスドクまでのキャリアカリキュラムに価値があると見なされて、育成するために対価給与がしっかり払われることだ。修士は学費を払って研究の現場を広く学ぶ過程であり、博士は研究者としてトレーニングを受けると同時に、研究を実施遂行し、より深淵へと共に進むことで給与を得るPIのフォロワーの一人となる。ちなみにクビもある。完全ではないが、自立も求められる。

疑問の一つは、日本の産業界や教育界はなんでこれに追随しなかったんだろうといこと。チャンスはいくらでもあったはずだと思う。

 

スイスに限らず、やはり研究をするなら主言語は英語だ。

Zurichはドイツ語圏だけど、仏伊蘭澳英露印中くらいなら平気でみんなapplyしてくる。母国語ではないとは言え、必要なコミュニケーションは十分取れる。

陸が続いてるのも大きい。特にEU圏は就労ビザも要らない。休暇も基本的に自由に取れるし、人口も過密じゃないから移動コストが圧倒的に低い。

日本を出るということが選択肢として当たり前にはまだ存在してない。

当たり前だけど、日本は日本語多すぎ。他の言語に触れる機会が少なすぎ。日本以外の世界に触れる機会が少なすぎ。

 

だらだら書いて疲れたから今日はここまで。

なんかこんな世の中になってしまったから余計に難しいんだけど、会社の外の人たちともっと繋がりを作っておきたいなぁ。なんか窮屈だ。

Knimeを使ってVirtual Libraryを作るWork Flow

Grüezi,

 

今回は久しぶりにLibraryっぽいお話を。

端的に言うと、こちらのWork Flowの解説です。

hub.knime.com

右側のDownload Work FlowからDownloadしてしまえばOK何ですが、ケミストにも使いやすいように少しだけカスタマイズします。

 

と言うわけで今回の内容はこちら。

Work Flow全体像

f:id:keetane:20200630203518p:plain

オリジナルでは先頭にFile readerのNodeを使っていたと思います。それでも全然OKです。最初に構造式を読み込みたいだけなので、SDF readerでもChemical Structure readerでも何でもいいかと思います。

それとオリジナルではTwo Component ReactionではSMARTSで化学反応を指定していました。しかし私はもちろんSMARTSの記述なんて調べるだけでも半日くらいかかります多分。と言うわけで、Enumerationする反応式もMarvin Sketchを使ってしまいます。

Marvin Sketch

フリーで使える構造式描画ソフトでお馴染みのMarvinですが、KnimeでもフリーでNodeが使えます。今回はこんな感じで実際に記載しましたが、File > Openから任意の構造式ファイルが読み込めます。SDFやSmilesはもちろん、 cdxも対応してるので、非常に優秀なNodeだと思います。数が多いときはSDF Readerとかの方が使いやすそうです。

 

f:id:keetane:20200630204014p:plain

 次がちょっと重要で、Change structure outputにチェックをいれてsdfを指定します。それと、output molecules as separate rowsを選択しておきます。この後のWork Flowで使うBuilding BlockはTable上ではバラバラにしておきたいからです。

 

f:id:keetane:20200630204307p:plain


RDKit Functional Group Filter

一つ前のRDKit from MoleculeはSDFファイルをRDKitに変換しているだけです。次に必要な構造をfilteringしておきます。オリジナルのまんまですが、Primary Amineは拾ってSecondary Amineは除くようになってます。下段ではカルボン酸を拾ってます。

そもそもBuilding Blockごとにファイルを用意して読み込んでおけば、ここのステップは省略出来ます。官能基を選抜出来るので、Work Flowの中に置いておくだけでも邪魔にはなりませんけどね。

 

f:id:keetane:20200630204634p:plain

 

Row sampling

Row samplingは、Building Blocks数が多い時に上限を設定してランダムサンプリングしてくれます。

f:id:keetane:20200630205304p:plain


 RDKit Two Component Reaction (Enumerate)

今回の要がこいつです。Reactants 1と2をソースにReactionに基づいた構造を発生させます。オリジナルではカルボン酸とアミンの縮合ですが、SMARTSで書いてあるので私にはさっぱり意味がわかりません...

f:id:keetane:20200630205350p:plain

そこでここでもオススメしたいのがMarvin SketchのNodeです。使い方はReaxysなんかと一緒です。まずは実施したい化学式をシンプルに描画した後、対応する原子をarrow toolでmappingしていきます。

f:id:keetane:20200630205651p:plain

今回はこんな感じになればOKです。

f:id:keetane:20200630205905p:plain

そしてOutput optionsを設定します。今回はStructure typeがRxnCellで、output as one row containing all molecules in oneをチェックします。Nodeの解説に書いてあるまんまです。

f:id:keetane:20200630205944p:plain

後はRDKit Canon SMILESまで全て実行します。こんな感じでoutputされればOKです。

f:id:keetane:20200630210319p:plain

Work Flowの最後にCDKのMolecular Properties Nodeとかを置いてあげると、rotatable bondやheavy atomなどdiscreptorを計算してくれます。

多段階反応も基本的には同じ流れで構築出来ます。仮にBuilding Blockを100個ずつ揃えた3成分連結反応なら、100*100*100=1,000,000化合物があっという間に出来上がりです。こいつをVirtual Screeningに流したらVirtual Hitが見つかってくるわけですが、現実にAffinityがあったり活性を示すかは全然別の話なので工夫が必要になってくるわけです。

 

今までSchrödingerのMaestroでこれをやってましたが、Ligprepなしの2次元で作るだけならKnimeの方が軽くて早いですね。

Degronを探せ2 -Zinc Finger degron-

Grüezi,

 

前回の記事で晒した素人感は一切無視して、Degronについて少しずつ深掘りします。

keetaneblog.hatenablog.com

 

今回の文献はこちら。PDB ID: 6H0F 6H0G

science.sciencemag.org

 

今回使っている結晶構造のDegronはZinc Fingerの構造を持っています。CRBNとPomalidomide及びPOIの重ね合わせがこちらです。

f:id:keetane:20200620064146p:plain



左側のSphereで表示されたZn原子にCysteinが2残基、Histidineが2残基しっかりbindingしています。結合距離は2Åでかなり硬いです。このようにHisとCysがZnを摘んだようなmotifをC2H2 ZF domainとか呼びます。そして今回はこのloop部分がGlyをもつDegronなので、Zinc Finger (ZF) Degronな訳です。

 

今回著者らは、この部分構造に着目しました。6572個のZinc fingerをIMiDs存在下で分解されるかscreeningしたわけです。結果、11個のZinc Fingerが分解され、そのうち6個は全長が分解されました。

次にタンパクの配列を解析したわけですが、結晶が得られているIKZF3と同じ位置にC2H2とGが配置されていることがわかりました。また、IKZF3に変異を入れて被分解能を確認したところ、C2H2やGはZinc Fingerの構造維持に必要なものの、分解に必要なアミノ酸は別の部分だということが判りました。

 

いやー同じこと考えてる人なんて世の中にたくさんいるもんだなぁと感心しましたw

ひとまず、Molecular GlueはSBDDアプローチ以外にもInfomaticsアプローチが有効であることは間違いなさそうです。

 

じゃあSBDDアプローチは出来ないのか?ってのも一つ疑問です。前述したように、CRBNとPOIであるIKZF3はPPIしてる訳ですが、リガンドのIMiDsをPOIと相互作用するようにデザインしたら...?

 

まだまだMedicinal Chemistの需要は無くならなさそうですね。

Medicinal Chemistryへの理解が残っていればの話ですが。

 

ではまた次回。