Анализ файла траектории с использованием Python

#python #numpy #file #analysis #frames

#python #numpy #файл #анализ #кадры

Вопрос:

Прежде всего, я очень новичок в python. У меня есть большой файл траектории с несколькими временными шагами (50000), и то, что я пытаюсь сделать, это написать код на python, который вычисляет среднеквадратичное смещение атомов кислорода воды (O).

Мой план состоит в том, чтобы сначала выбрать атомы кислорода кадр за кадром, а затем выполнить с помощью кода MSD. В одном кадре моего файла траектории первые 2 строки содержат общее количество атомов (5058) и описание атома соответственно для этого пертикулярного кадра, после чего следующие 606 строк содержат поверхностные атомы, а остальные 4450 строк упорядоченно содержат атомы воды (O, H, H,O, H, H, O, H, H и т. Д.) Я начал так, но я чувствую, что я никуда не иду.

   import numpy as np 
  import math
  
  #parameters
 
 
 m_o     = 16 #gmol-1                                                  
 m_h     = 1 #gmol-1
 leave   = 608 #including the two title lines first 606 atoms are surface atms.so they should be just read
 waters  = 4450 #after the first 606 atoms the rest are water atoms
 N       = 5060 #number of lines in a frame
 
 
 with open("traj.xyz","r") as f:
    count = len(f.readlines(  )) #counts the total number of lines
 #print(count)
 nof = count/N
 '''nof is number of frames'''
 print(int(nof))
 
 def frames():
    for i in nof:
        count = 0
        xcoord = []
        ycoord = []
        zcoord = []
        for i in range(leave):
            title = f.readline()
            for line in f:
                cnt =1
                if (cnt % 3 == 1):
                    atmid,x,y,z = line.split()
                    xcoord.append(x)
                    ycoord.append(y)
                    zcoord.append(z)
                    print(atmid,x,y,z)

 if (cnt == waters):
    exit()                                                                
 frames()
  

Комментарии:

1. Выравнивание символов (т. Е. tba) очень важно в кодировании на Python, и что бы вы ни делали с этим форматированием кода, все они были уничтожены, поэтому ваш код нечитаем. Пожалуйста, исправьте, чтобы мы могли помочь. Также, пожалуйста, постарайтесь сохранить информацию в вопросе о вещах, имеющих отношение к программированию, поскольку большинство из нас не могут следовать химическому жаргону или даже сказать, что вы хотите, основываясь на химических терминах.

2. Пожалуйста, отформатируйте свой код правильно — выделите его с помощью мыши и щелкните {} на панели инструментов форматирования рядом с жирным шрифтом и курсивом . Пожалуйста, также предоставьте образцы различных частей вашего файла траектории, а также детали вычислений, которые вы хотите выполнить. Спасибо.