以上代码没有正确获取C原子坐标,帮忙修改。import numpy as np from ase.io import read # 读取POSCAR或cif文件 atoms = read('POSCAR') # 检查是否成功读取POSCAR文件 print(atoms) # 获取C原子坐标 C_coords = atoms.get_positions()[atoms.get_chemical_symbols() == 'C'] # 检查是否正确获取符合条件的C原子坐标 print(C_coords.shape) print(C_coords) # 计算x坐标相同的原子个数 x_counts = np.unique(C_coords[:, 0], axis=0, return_counts=True)[1] # 计算y坐标相同的原子个数 y_counts = np.unique(C_coords[:, 1], axis=0, return_counts=True)[1] # 计算z坐标相同的原子个数 z_counts = np.unique(C_coords[:, 2], axis=0, return_counts=True)[1] print('x坐标相同的原子个数:', x_counts) print('y坐标相同的原子个数:', y_counts) print('z坐标相同的原子个数:', z_counts)
时间: 2024-03-03 14:51:03 浏览: 66
C语言坐标问题
如果以上代码没有正确获取C原子坐标,可能是因为POSCAR文件中没有包含C原子,或者C原子的化学符号不是大写字母C。你可以尝试修改代码,手动查看POSCAR文件中的原子种类和坐标,以确保程序正确获取了C原子坐标。以下是修改后的代码:
```
import numpy as np
from ase.io import read
# 读取POSCAR或cif文件
atoms = read('POSCAR')
# 检查是否成功读取POSCAR文件
print(atoms)
# 获取C原子坐标
C_coords = atoms.get_positions()[atoms.get_chemical_symbols() == 'C']
# 检查是否正确获取符合条件的C原子坐标
print(C_coords.shape)
print(C_coords)
# 计算x坐标相同的原子个数
x_counts = np.unique(C_coords[:, 0], axis=0, return_counts=True)[1]
# 计算y坐标相同的原子个数
y_counts = np.unique(C_coords[:, 1], axis=0, return_counts=True)[1]
# 计算z坐标相同的原子个数
z_counts = np.unique(C_coords[:, 2], axis=0, return_counts=True)[1]
print('x坐标相同的原子个数:', x_counts)
print('y坐标相同的原子个数:', y_counts)
print('z坐标相同的原子个数:', z_counts)
```
请注意,此代码假设POSCAR文件中存在C原子,并且其化学符号为大写字母C。如果你的POSCAR文件中不存在C原子,或者C原子的化学符号不为大写字母C,则需要相应地修改代码。
阅读全文