Python モジュール: parmed
概要
- Gromacs や AMBER の構造やトポロジーファイルを扱うモジュール
インストール
$ sudo pip3 install parmed
使い方
import parmed
よく使う機能
構造の読み込み
structure = parmed.load_file("INPUT")
structure
: 構造オブジェクトを格納する変数INPUT
: 構造ファイル (.pdb / .gro)
構造の出力
structure.save("OUTPUT", "FORMAT", overwrite = True)
structure
: 構造オブジェクトOUTPUT
: 出力ファイル (.pdb / .gro)FORMAT
: 出力ファイルのフォーマット (pdb / gro)overwrite = True
: 上書き保存する
Gromacs トポロジーファイルの読み込み
topology = parmed.gromacs.GromacsTopologyFile("INPUT", xyz = "COORD")
topology
: トポロジーオブジェクトを格納する変数INPUT
: トポロジーファイル (.top)xyz = “COORD”
: .gro などの座標ファアイル (任意のオプション)
Amber トポロジーファイルの読み込み
topology = parmed.amber.AmberParm("INPUT", xyz = "COORD")
topology
: トポロジーオブジェクトを格納する変数INPUT
: トポロジーファイル (.prmtop)xyz = “COORD”
: .inpcrd などの座標ファアイル (任意のオプション)
トポロジーファイルの出力
topology.save("OUTPUT", "FORMAT", overwrite = True)
topology
: トポロジーオブジェクトOUTPUT
: 出力ファイル (.top / .prmtop)FORMAT
: 出力ファイルのフォーマット (gromacs
(gromacs トポロジー) /amber
(Amber トポロジー))overwrite = True
: 上書き保存する
情報取得
- 原子オブジェクト
object.atoms
object
: トポロジーや構造オブジェクト- 原子オブジェクトは配列で格納されているため、各原子オブジェクトにアクセスするには
object.atoms[0]
のようにアクセスする。
- 原子名
object.atoms[x].name
object
: トポロジーや構造オブジェクトx
: アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)
- 原子順序番号
object.atoms[x].number
object
: トポロジーや構造オブジェクトx
: アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)- 原子順序番号は構造オブジェクト、およびトポロジーオブジェクト読み込み時に構造ファイルを読み込ませた場合にのみ有効
- 原子インデックス
object.atoms[x].idx
object
: トポロジーや構造オブジェクトx
: アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)- 原子全てに与えられた 0 から始まるインデックスを返す (原子順序番号は、読み込んだファイル内の原子順序番号を返すため、ファイル内で重複や誤った番号が付けられていると、影響を受ける)
- 残基オブジェクト
object.residues
object
: トポロジーや構造オブジェクト- 残基オブジェクトは配列で格納されているため、各残基オブジェクトにアクセスするには
object.atoms[0]
のようにアクセスする。
- 残基名
object.residues[x].number
object
: トポロジーや構造オブジェクトx
: アクセスする残基のインデックス (ファイルにある残基順序番号ではなく、0 から始まる配列のインデックス)
- 残基順序番号
object.residues[x].number
object
: トポロジーや構造オブジェクトx
: アクセスする残基のインデックス (ファイルにある残基順序番号ではなく、0 から始まる配列のインデックス)- 残基順序番号は構造オブジェクト、およびトポロジーオブジェクト読み込み時に構造ファイルを読み込ませた場合にのみ有効
- 特定原子の残基名および特定残基の原子名
object.atoms[x].residue.name object.residues[y].atoms[z].name
x
: 特定原子のインデックスy
: 特定残基のインデックスz
: 特定残基 y に属する原子のインデックス
特定部位の削除
object.strip("AMBER_MASK")
AMBER_MASK
: 削除する部位の Amber mask
使用例
PDB から座標を抽出する
- example.pdb の場合:
import parmed obj_mol = parmed.load_file("example.pdb") print(obj_mol.coordinates)
- 座標は numpy.ndarray 形式で取得できる
PDB からリガンドの座標を抽出する
- 5r7y.pdb (リガンド残基名
JFM
) の場合
import parmed obj_mol = parmed.load_file("5r7y.pdb") obj_ambermask = parmed.amber.AmberMask(obj_mol, ":JFM") print(obj_mol.coordinates[list(obj_ambermask.Selected())])
parmed.amber.AmberMask(MOLECULE_OBJECT, AMBERMASK)
で Amber mask による指定ができる。- AmberMask オブジェクトの
.Selected()
はジェネレータで、Amber mask で指定された原子のインデックス (配列インデックス) を返す。