从晶体中产生衍射强度

Dans-Diffraction的Python项目详细描述


丹麦扩散

读取晶体cif文件并模拟衍射

1.x版

丹·波特,钻石光源 2018年

tl;dr:

$ ipython -i -m Dans_Diffraction
importDans_Diffractionasdifxtl=dif.Crystal('some_file.cif')xtl.info()# print Crystal structure parameters# Print reflection list:print(xtl.Scatter.print_all_reflections(energy_kev=5))# Plot Powder pattern:xtl.Plot.simulate_powder(energy_kev=8)plt.show()# Start graphical user interface:xtl.start_gui()

对于评论、查询或错误-电子邮件dan.porter@diamond.ac.uk

安装

要求: Python 2.8+/3+包:NumpyMatplotlibScipyTkinter

来自PyPI的稳定版本:

$ pip install Dans-Diffraction

来自Github的最新版本:

$ git clone https://github.com/DanPorter/Dans_Diffraction.git

操作

dans_衍射最好在交互式python环境中运行:

$ ipython -i -m Dans_Diffraction

dans_衍射也可以作为导入在脚本中运行,示例脚本在Examples文件夹中提供。

读取cif文件

importDans_Diffractionasdifxtl=dif.Crystal('some_file.cif')xtl.info()# print Crystal structure parameters

改变原子位置

xtl.Cell.latt([2.85,2.85,10.8,90,90,120])#  set lattice parametersxtl.Atoms.info()# Print Symmetric positionsxtl.Structure.info()# Print All positions in P1 symmetry (same structure and functions as xtl.Atoms)# Symmetric positionsxtl.Atoms.changeatom(idx=0,u=0,v=0,w=0,type='Co',label='Co1')xtl.Atoms.addatom(idx=0,u=0,v=0,w=0,type='Co',label='Co1')# After adding or changing an atom in the Atoms class, re-generate the full structure using symmetry arguments:xtl.generate_lattice()# Full atomic structure in P1 symmetryxtl.Structure.changeatom(idx=0,u=0,v=0,w=0,type='Co',label='Co1')xtl.Structure.addatom(idx=0,u=0,v=0,w=0,type='Co',label='Co1')# Plot crystal Structurextl.Plot.plot_crystal()# 3D plotxtl.Plot.plot_layers()# 2D plot for layered materials

3D Plot

改变晶体对称性

xtl.Symmetry.info()# print symmetry argumentsxtl.Symmetry.addsym('x,y,z+1/2')# adds single symmetry operationxtl.Symmetry.changesym(0,'x,y,z+1/4')# After adding or changing symmetry operations, regengerate the symmetry matricesxtl.Symmetry.generate_matrices()

计算结构因子

x射线或中子结构因子/强度是根据全单位电池结构计算的,包括原子 形状因子(x射线)或相干散射长度(中子)。

# Choose scattering options (see help(xtl.Scatter.setup_scatter))xtl.Scatter.setup_scatter(type='x-ray',energy_keV=8.0)# Allowed radiation types:#    'xray','neutron','xray magnetic','neutron magnetic','xray resonant'xtl.intensity([h,k,l])# Returns intensityxtl.print_all_refelctions()# Returns formated string of all allowed reflections# Plot Experimental Intensitiesxtl.Plot.simulate_powder()# Powder patternxtl.Plot.simulate_hk0()# Reciprocal space plane

Powder PatternHK0 Simulation

使用适当的磁性形状因子,中子和X射线(共振和非共振)也可进行磁散射。

Imag=xtl.Scatter.magnetic_neutron(HKL=[0,0,3])Ires=xtl.Scatter.xray_resonant_magnetic(HKL=[0,0,3],energy_kev=2.838,azim_zero=[1,0,0],psi=0,polarisation='s-p',F0=0,F1=1,F2=0)

属性

Crystal类包含许多可以在Properties类中公开的原子属性:

xtl.Properties.info()

所有属性都存储在dans_衍射/数据文件夹中。

上部结构

上层结构可以使用上层结构类来构建,只需要一个矩阵来定义新阶段:

su=xtl.generate_superstructrue([[2,0,0],[0,2,0],[0,0,1]])

超级结构类的行为类似于Crystal类,但是有一个额外的“parent”属性引用原始的 晶体结构和与上部结构部分相关的附加行为。

su.parent.info()# Parent structuresu.P# superstructure matrix 

图形前端

All GUI elements

启动新的图形用户界面,然后选择CIF文件:

dif.Startgui()

使用已生成的晶体:

xtl.start_gui()

FDMNES功能

fdmnes是模拟共振x射线衍射的有力工具,由Y. Joly and O. Bunau.

dans_衍射fdmnes类允许自动创建输入文件并对结果进行简单分析。 应使用以下命令激活这些功能(只需发出一次)。

dif.activate_fdmnes()

一旦激活,FDMNES类就变得可用

fdm=dif.Fdmnes(xtl)# Create input files and run FDMNESfdma=dif.FdmnesAnalysis(output_path,output_name)# Load output files and plot results

有关详细信息,请参见类文档

一旦激活,fdmnes gui元素就可以从主窗口获得,模拟类的功能。

FDMNES RunFDMNES Analyse

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
面向java语句的方法与面向表达式的方法   密码学如何在java中为json对象签名?   是否可以通过java程序知道给定卡夫卡消费群体的消费偏移量?   打印字符时出现java未知问号   java为JFrame设置背景色   在ubuntu中检查java版本时linux权限被拒绝   如何用java创建xml模式   java无法在远程服务器上运行Vaadin应用程序   java智能垃圾收集?   java如何在SpringMVC中设置缓存头?   在unix计算机上运行java应用程序a:>签名以输入内容   Java、Apache Commons配置XML属性   使用ArrayList调用Java未经检查的方法   在文本文件中查找并替换单词(Java GUI)   java Android Studio无法检测到JDK7或更新版本   java从socket的有效负载获取事件消息   安卓中java调用子类方法   java如何通过点击超链接来运行jar文件(Firefox)