Open Babelでmol2形式をpdb形式に変換すると警告が出る

[ぶぅちゃんズ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/bu-chans)担当3日目。

# Open Babel Warning  in ReadMolecule
修士研究でscPDBのmol2ファイルをpdbファイルにOpen Babelを使って変換するとたまに以下の警告が出力される。

```
==============================
*** Open Babel Warning  in ReadMolecule
  This Mol2 file is non-standard. Problem with molecule: 1a4z_NAD_4_protein Cannot interpret atom types correctly, instead attempting to interpret atom type: SM as elements instead.
==============================
*** Open Babel Warning  in Translate
  Cannot perform atom type translation: table cannot find requested types.
```
どうやらmol2にはあってpdbにはないアトムタイプがあるっぽいが、それが何かまでは示してくれてない。
面倒だけど、コードを書いてどの原子か該当するのか検出しよう。その前にmol2とpdbフォーマットの概要を述べる。

# PDB形式
PDBファイルはProtein Data Bankが提供するタンパク質の全原子の三次元構造などが書かれたデータベースに使用される形式である。例えば、先ほどのタンパク質PDB ID=1A4Zを例に見てみよう。

```
COMPND    1a4z_NAD_4_protein 
AUTHOR    GENERATED BY OPEN BABEL 2.4.1
ATOM      1  C   VAL A   1      69.260 105.787 -14.273  1.00  0.00           C  
ATOM      2  O   VAL A   1      69.100 105.538 -15.469  1.00  0.00           O  
ATOM      3  CA  VAL A   1      68.866 107.142 -13.689  1.00  0.00           C  
...
ATOM  30437 SM   SM5 A1978     103.664 131.366  21.601  1.00  0.00          Sm  
ATOM  30438 SM   SM5 A1979      80.008 162.014  22.868  1.00  0.00          Sm  
CONECT    1    3    2   20                                            
CONECT    2    1
...
CONECT3043330407                                                      
CONECT3043430408                                                      
MASTER        0    0    0    0    0    0    0    0 30438    0 30438    0
END
```
これは、Open Babelがはいたpdbファイルである。PDBで検索するとヘッダーにもっと情報が追加されている。
ATOMフィールドには原子の通し番号、原子名、アミノ酸や核酸の種類、アミノ酸/核酸の通し番号、座標、占有率、温度因子、元素記号が書かれ、CONECTフィールドには原子の通し番号、結合原子の通し番号が記載されている。
立体構造はこんな感じ。（あんま関係ないけど）

&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/409783/f5082062-8271-e413-bb6b-6f61848cbc3e.png" width=40%>

# MOL2形式
正直なんでこんなにタンパク質立体構造のファイル形式あんねんって感じだ。mol2形式だとタンパク質PDB ID=1A4Zはこんな感じ。

```
@<TRIPOS>MOLECULE
1a4z_NAD_4_protein
30438 30786  1979     0     0
PROTEIN
NO_CHARGES


@<TRIPOS>ATOM
     1 C           69.2600   105.7870   -14.2730 C.2          1 VAL8     0.0000
     2 O           69.1000   105.5380   -15.4690 O.2          1 VAL8     0.0000
     3 CA          68.8660   107.1420   -13.6890 C.3          1 VAL8     0.0000
...
 30437 SM         103.6640   131.3660    21.6010 Du        1978 SM502    3.0000
 30438 SM          80.0080   162.0140    22.8680 Du        1979 SM502    3.0000
@<TRIPOS>BOND
     1    3    1       1
     2    1    2       2
...
 30785 30407 30433       1
 30786 30408 30434       1
@<TRIPOS>SUBSTRUCTURE
     1 VAL8        1 RESIDUE           4 A     VAL     0 **** VAL A   8
     2 PRO9       17 RESIDUE           4 A     PRO     0 **** PRO A   9
...
  1978 SM502   30437 GROUP             4 C      SM     0 ****  SM C 502
  1979 SM502   30438 GROUP             4 D      SM     0 ****  SM D 502
@<TRIPOS>SET
ATOM$GREEN STATIC     ATOMS   COLORGROUP SYSTEM 
265 25147 25149 25151 25152 25153 25154 25166 25168 25170 25171 25172 25173 25185 25187 25189 25190 25191 \
25199 25201 25203 25204 25205 25206 25208 25209 25210 25211 25212 25223 25225 25227 25228 25237 25239 25241 \
...
30369 30370 30372 30374 30376 30378 30380 30381 30384 30386 30392 30393 30395 30397 30399 30401 30402 30403 \
30406 30407 30408 
```
各フィールドの詳細は[こちら](http://chemyang.ccnu.edu.cn/ccb/server/AIMMS/mol2.pdf)を参照。ATOMフィールドの原子名がPDBのATOMフィールド原子名に対応していることがわかる。警告が出ているのはここの変換だ。

# 原子名の比較
エラー通りOpen Babelにより出力されたpdbファイルの原子名がSMとなっているところのmol2原子を取り出す。

```
Du SM
Du SM
Du SM
Du SM
```
どうやら、mol2形式ではDuと表記されるアトムタイプがpdbには対応していないようだ。同様の警告が出る他のタンパク質もこのDuが原因っぽい。**mol2形式でDuはダミー原子を表す**（[参考](https://rasbt.github.io/biopandas/tutorials/Working_with_MOL2_Structures_in_DataFrames/)）らしく、Open Babelが適当に代替原子を選んで出力してるらしい。

# 結論
無視しても良さそうだ。
というか、そもそもなんでPDBに変換しないといけないんだっけ...