dcd ファイルから水分子の時系列データを含むファイルを作成しようとしています。MDAnalysis モジュールまたは関数のいずれかを使用してこのデータを生成することは可能ですか? または、このファイルを生成するための Python スクリプトはありますか?
DCD ファイルを入力として使用して、2 つの列 (1 つは水分子の z 座標、もう 1 つはそれぞれの時間ステップ) を含むこのファイルを生成する必要があります。
dcd ファイルから水分子の時系列データを含むファイルを作成しようとしています。MDAnalysis モジュールまたは関数のいずれかを使用してこのデータを生成することは可能ですか? または、このファイルを生成するための Python スクリプトはありますか?
DCD ファイルを入力として使用して、2 つの列 (1 つは水分子の z 座標、もう 1 つはそれぞれの時間ステップ) を含むこのファイルを生成する必要があります。
(z, t) 時系列はさまざまな方法で取得できますが、ここでは最も基本的なものを示しています。DCD 軌跡ファイルに加えて、PSF トポロジー ファイルもあると仮定します (ただし、実際には、すべてのトポロジーおよび軌跡ファイル形式が MDAnalysis で機能します)。また、水の酸素原子は「OW」と名付けられていると思います。
「z、t」データ構造をどのように見せたいのか、実際にはわかりません。N
水分子がある場合は、N
時間ステップごとに z 座標があるため、各「行」を異なる時間ステップにしたいと仮定すると、これが「2 つの列」としてどのように意味を持つのかわかりません。代わりに、次のデータ構造を使用します。最終的な出力は形状の配列になります(T, N+1)
。ここT
で、 は軌跡の時間ステップN
の数、 は水の数です。配列の各行には、[t, z1, z2, ..., zN]
水 i の時間と z 座標が含まれます。
import numpy as np
import MDAnalysis as mda
u = mda.Universe(PSF, DCD)
water_oxygens = u.select_atoms("name OW")
# pre-allocate the array for the data
data = np.zeros((u.trajectory.n_frames, water_oxygens.n_atoms + 1))
for i, ts in enumerate(u.trajectory):
data[i, 0] = ts.time # store current time
data[i, 1:] = water_oxygens.positions[:, 2] # extract all z-coordinates
# now data contains your timeseries and you can work with it
# (or export it using np.savetxt()
MDAnalysis の概要については、ユーザー ガイドを参照してください。ユーザー ガイドには、選択と軌跡の反復を説明するクイックスタート ガイドもあります。
さらに質問がある場合は、MDAnalysis の Google グループで質問してください。通常、最も迅速な回答が得られます。