PythonとRDKitでアミノ酸配列から環状ペプチドを生成してみる


はじめに

掲題の件を実現するにあたって、CycloPsというライブラリを見つけたので今回試してみた。

環境

  • Python3.x
  • RDKit 2020.X
  • CycloPs

CycloPsとは

アミノ酸配列から環状ペプチドのバーチャルライブラリを生成してくれるツールである。
1次元のアミノ酸配列から、残基同士を結合することで、環状のペプチドを生成してくれる。
GUIとコマンドラインの両方で使える。
詳しくは参考文献の論文を参照のこと。

残基同士を結合するパターンは次の5種類である。それぞれ細かい条件があるようなので詳しくは論文を見てほしい。

  • head-to-tail bond アミノ酸配列のC端とN端を結合する。
  • disulfide bond  システイン残基同士を結合する。
  • side-chain to side-chain bond  側鎖同士を結合する。
  • side-chain to N-terminal bond  側鎖とN端を結合する
  • side-chain to C-terminal bond  側鎖とC端を結合する

CycloPsのインストール

元々はPython2系で開発されているが、自分の環境だとRDkitがうまく動作しなかったため、3系でイントールする。

 $ conda create -n cyclops python==3.6
 $ conda activate cyclops
 $ conda install -c rdkit rdkit
  $ git clone https://github.com/fergaljd/cyclops.git

インストール後の作業

Python3系ではCycloPsが動作しないためソースを修正する必要がある。今回は、コマンドラインのみ使えればよい。
そこで PepLibGen/StructGen/StructGen.py を以下の通り修正することで、Python3でも動作するようにする。

修正内容

  • print a, b のような記載を print(a,b) のように修正する。
  • Except a, b のような記載を Except a as b のように修正する。
  • 940行目あたりでエラーが出るため、以下のように修正する
            # print(out,mollstr)
            # print(out, '$$$$')
            out.write(molstr)
            out.write('$$$$')
            out.write('\n')
  • その他実行時エラーとなるところを、Python3で動作するよう修正する(手抜き)。

実行例

CPPsite 2.0 に登録されている環状ペプチドのアミノ酸配列と出力SDFを指定して実行する。
するとSDFに、5種類のパターンにより生成された環状ペプチドのリストが出力される。
以下実行例である。

python PepLibGen/StructGen/StructGen.py CSKSSDYQC hoge.sdf

実行結果例

アミノ酸配列 "CSKSSDYQC" を指定して得られた6つの構造を以下に列挙する。

1番目

これは線形タイプである。環状ではないものも出力される仕様のようである。

2番目

これはN端とC端をつなげたものか。

3番目

これは末端と側鎖か。

4番目

これは側鎖同士か。

5番目

これは側鎖同士か

6番目

これはシステイン残基同士の結合だろう。

参考