LoginSignup
3
2

More than 1 year has passed since last update.

【分子動力学】MDのトラジェクトリー解析ライブラリ「MDTraj」はじめの一歩

Last updated at Posted at 2021-05-20

はじめに

この記事では、pythonで使えるトラジェクトリー解析ライブラリであるMDTrajのインストールや簡単な解析方法を解説します。

前提

Anacondaを導入済み

実行環境

CentOS7

参考

インストール

以下を実行するだけでOK

conda install -c conda-forge mdtraj

トラジェクトリーを読み込む、原子を指定するなど

適当なトラジェクトリーファイルを用意してください。
トラジェクトリーの読み込みは

import mdtraj as md
t = md.load('md.xtc', top='md.gro')

のように行います。

座標データはt.xyzで取得できて、

>>>print(t.xyz.shape)
(101, 1960, 3)

これは全部で101フレーム、1960原子、3次元(x,y,z)の座標のリストになっているということ。

各フレームの時間もこのように取得できます。単位はピコセカンドですね。

#最初の10フレームの時間を取得
>>>print(t.time[0:10])
[ 0. 10. 20. 30. 40. 50. 60. 70. 80. 90.]

また、セルの長さも取得できます。

>>>print(t.unitcell_lengths[-1])
[6.9593244 6.9593244 6.9593244]

トラジェクトリーを解析する

RMSDを計算する

import mdtraj as md
import numpy as np
import matplotlib.pyplot as plt
import csv

# トラジェクトリーの読み込み
t = md.load('md.xtc', top='md.gro')

# 各フレームの時間のリストを取得
time = t.time
# トラジェクトリーの最初のフレームを参照構造としてtのRMSDを計算する
rmsds = md.rmsd(t,t,0)

# 時間とRMSDをCSVファイルに書き込む
with open('rmsd.csv', 'w') as f:
        writer = csv.writer(f)
        for i in range(len(time)):
                writer.writerow([time[i], rmsds[i]])

# 時間vsRMSDでグラフを描画する
plt.plot(t.time, rmsds, label="rmsd")
plt.xlabel('time [ps]')
plt.ylabel('rmsd [nm]')
plt.show()

image.png

もしgroファイルを参照構造としたいなら、下記のように書けばよいです。

t = md.load('md.xtc', top='md.gro')
r = md.load('md.gro')

rmsds = md.rmsd(t,r,0)

↓でもう少し突っ込んだ内容も書きました

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2