Python初心者です。
上記のような原子の座標を示すファイルを解析するプログラムを作りたいと思っています。
2500
STEP: 1
A 10.0 -12.3 230.0
B 12.3 4.5 -45.0
C -10.2 8.4 -200.0
・
・
・
j 11.5 -5.6 -30.4
2500
STEP: 2
A 12.0 -17.3 250.0
B 12.3 -7.5 75.0
C -10.0 9.9 -210.0
・
・
・
j -14.5 20.3 -102.0
1STEPに10種類の原子があり、全部で100STEPあります。
1行目の2500は1STEPあたりの原子数で、2行目がSTEP数です。
Z軸の範囲は-250から250です。
Z軸を0.1ずつ変化させたときのある原子の個数を出すプログラムを書きたいと思い、
下記のプログラムを作成しました。
私が得たい結果は
-250 -249.9 0
-249.9 -249.8 1
・
・
・
249.9 250 2
のようにZ軸が0.1刻みで変化させたときの範囲のある原子数の個数を求め、
ヒストグラムを書きたいです。
下記のプログラムでは、Aという原子の個数を求めようとしています。
しかし、このプログラムでは
249.9 259.9の羅列が出力されるだけです。
どなたか、ご教授いただけますでしょうか。
よろしくお願いします。
import sys input_file_name = sys.argv[1] input_file = open( input_file_name , "r" ) loop = 100 for l in range(loop): natoms = int ( input_file.readline() ) title = input_file.readline() iatom = 0 atom_name = [""]*natoms zzz_coord = [0.0]*natoms result = [0.0]*natoms for iatoms in range(natoms): line = input_file.readline() items = line.split() atom_name[iatom] = items[0] zzz_coord[iatom] = float( items[3] ) iatom += 1 for i in range(natoms): for j in [0.1*x for x in range(-2500,2500)]: if atom_name[i] == "A" and j < zzz_coord[i] < j+0.1 : result[i] += 1 else: continue for i in range(natoms): print("{0:.1f} {1:.1f}".format(j,j+1,result[i] ))
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/08 07:04
2017/11/08 07:09
2017/11/08 09:17