В основном. Мне нужно рассчитать RDF. Я уже рассчитал «нормальный RDF», то есть по всей симуляции. Однако я хотел бы выполнить тот же расчет, но только с использованием определенного количества кадров. Есть ли способ сделать это? Должен ли я рассчитывать RDF вручную, вычисляя расстояние на каждом шаге?
Я пробовал сделать это:
Код: Выделить всё
frame_count = len(all_p.trajectory)
half_frame_count = int(frame_count/2)
frames_first_half = []
frames_second_half = []
for ts in all_p.trajectory[:half_frame_count]:
frames_first_half.append(ts.positions.copy())
for ts in all_p.trajectory[half_frame_count:]:
frames_second_half.append(ts.positions.copy())
u_fragment_1 = mda.Universe(PDB, coordinates=frames_first_half)
A_1 = u_fragment_1.select_atoms('*selection A*')
B_1 = u_fragment_1.select_atoms('*selection B*')
u_fragment_2 = mda.Universe(PDB, coordinates=frames_second_half)
A_2 = u_fragment_2.select_atoms('*selection A*')
B_2 = u_fragment_2.select_atoms('*selection B*')
Код: Выделить всё
irdf = rdf.InterRDF(CA_A_1, CA_B_1,
nbins=2000,
range=(0.0,100.0),
exclusion_block=(1,1),
)
irdf.run()
rdf_x_axis = irdf.results.bins
rdf_y_axis = irdf.results.rdf
plt.plot(rdf_x_axis, rdf_y_axis)
plt.show()
plt.clf()
irdf = rdf.InterRDF(CA_A_2, CA_B_2,
nbins=2000,
range=(0.0,100.0),
exclusion_block=(1,1),
)
irdf.run()
rdf_x_axis = irdf.results.bins
rdf_y_axis = irdf.results.rdf
plt.plot(rdf_x_axis, rdf_y_axis)
plt.show()
Изображение от A до B
Подробнее здесь: https://stackoverflow.com/questions/787 ... mdanalysis