python:parmed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
python:parmed [2017/11/06 12:02] mumeiyamibitopython:parmed [2023/02/15 14:03] (現在) – [PDB からリガンドの座標を抽出する] mumeiyamibito
行 24: 行 24:
  
 ==== Gromacs トポロジーファイルの読み込み ==== ==== Gromacs トポロジーファイルの読み込み ====
-<code python>topology = parmed.gromacs.GromacsTopologyFile("INPUT")</code>+<code python>topology = parmed.gromacs.GromacsTopologyFile("INPUT", xyz = "COORD")</code>
   * ''topology'': トポロジーオブジェクトを格納する変数   * ''topology'': トポロジーオブジェクトを格納する変数
   * ''INPUT'': トポロジーファイル (.top)   * ''INPUT'': トポロジーファイル (.top)
 +  * ''xyz = "COORD"'': .gro などの座標ファアイル (任意のオプション)
  
 ==== Amber トポロジーファイルの読み込み ==== ==== Amber トポロジーファイルの読み込み ====
-<code python>topology = parmed.amber.AmberParm("INPUT")</code>+<code python>topology = parmed.amber.AmberParm("INPUT", xyz = "COORD")</code>
   * ''topology'': トポロジーオブジェクトを格納する変数   * ''topology'': トポロジーオブジェクトを格納する変数
   * ''INPUT'': トポロジーファイル (.prmtop)   * ''INPUT'': トポロジーファイル (.prmtop)
 +  * ''xyz = "COORD"'': .inpcrd などの座標ファアイル (任意のオプション)
  
 ==== トポロジーファイルの出力 ==== ==== トポロジーファイルの出力 ====
行 39: 行 41:
   * ''FORMAT'': 出力ファイルのフォーマット (''gromacs'' (gromacs トポロジー) / ''amber'' (Amber トポロジー))   * ''FORMAT'': 出力ファイルのフォーマット (''gromacs'' (gromacs トポロジー) / ''amber'' (Amber トポロジー))
   * ''overwrite = True'': 上書き保存する   * ''overwrite = True'': 上書き保存する
 +
 +==== 情報取得 ====
 +  * 原子オブジェクト\\ <code python>object.atoms</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * 原子オブジェクトは配列で格納されているため、各原子オブジェクトにアクセスするには ''object.atoms[0]'' のようにアクセスする。
 +  * 原子名\\ <code python>object.atoms[x].name</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * ''x'': アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)
 +  * 原子順序番号\\ <code python>object.atoms[x].number</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * ''x'': アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)
 +    * 原子順序番号は構造オブジェクト、およびトポロジーオブジェクト読み込み時に構造ファイルを読み込ませた場合にのみ有効
 +  * 原子インデックス\\ <code python>object.atoms[x].idx</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * ''x'': アクセスする原子のインデックス (ファイルにある原子順序番号ではなく、0 から始まる配列のインデックス)
 +    * 原子全てに与えられた 0 から始まるインデックスを返す (原子順序番号は、読み込んだファイル内の原子順序番号を返すため、ファイル内で重複や誤った番号が付けられていると、影響を受ける)
 +  * 残基オブジェクト\\ <code python>object.residues</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * 残基オブジェクトは配列で格納されているため、各残基オブジェクトにアクセスするには ''object.atoms[0]'' のようにアクセスする。
 +  * 残基名\\ <code python>object.residues[x].number</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * ''x'': アクセスする残基のインデックス (ファイルにある残基順序番号ではなく、0 から始まる配列のインデックス)
 +  * 残基順序番号\\ <code python>object.residues[x].number</code>
 +    * ''object'': トポロジーや構造オブジェクト
 +    * ''x'': アクセスする残基のインデックス (ファイルにある残基順序番号ではなく、0 から始まる配列のインデックス)
 +    * 残基順序番号は構造オブジェクト、およびトポロジーオブジェクト読み込み時に構造ファイルを読み込ませた場合にのみ有効
 +  * 特定原子の残基名および特定残基の原子名\\ <code python>object.atoms[x].residue.name
 +object.residues[y].atoms[z].name
 +</code>
 +    * ''x'': 特定原子のインデックス
 +    * ''y'': 特定残基のインデックス
 +    * ''z'': 特定残基 y に属する原子のインデックス
 +
 +==== 特定部位の削除 ====
 +<code python>object.strip("AMBER_MASK")</code>
 +  * ''AMBER_MASK'': 削除する部位の Amber mask
 +
 +
 +
 +===== 使用例 =====
 +==== PDB から座標を抽出する ====
 +  * example.pdb の場合:\\ <code python>
 +import parmed
 +obj_mol = parmed.load_file("example.pdb")
 +print(obj_mol.coordinates)
 +</code>
 +    * 座標は numpy.ndarray 形式で取得できる
 +==== PDB からリガンドの座標を抽出する ====
 +  * 5r7y.pdb (リガンド残基名 ''JFM'') の場合\\ <code python>
 +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())])
 +</code>
 +    * ''parmed.amber.AmberMask(MOLECULE_OBJECT, AMBERMASK)'' で Amber mask による指定ができる。
 +    * AmberMask オブジェクトの ''.Selected()'' はジェネレータで、Amber mask で指定された原子のインデックス (配列インデックス) を返す。
  
 ===== 参考サイト ===== ===== 参考サイト =====
  • python/parmed.1509937339.txt.gz
  • 最終更新: 2017/11/06 12:02
  • by mumeiyamibito