通过python实现任务的srim自动化

pysrim的Python项目详细描述


srim heatmap

所有问题和贡献都应在 gitlab。Github仅用作 反光镜可见度

pysrim:srim计算的自动化、分析和绘图

pysrim是一个python包,旨在包装和扩展srim 模拟离子穿过物质的常用工具。那里 SRIM有很多痛点吗?这个包旨在解决 他们。这些包括与所有操作系统的兼容性、自动化和崩溃 恢复srim计算,解析所有输出文件,以及 出版质量图。

现在有一个Docker图像 的costrouc/pysrim 运行pysrim和srim!无需设置,也不需要 显示以便服务器就绪。如果你想试试的话 下面是简短的命令(显然需要docker)。所有输出文件将 存储在本例的/tmp/output中。基准 显示 Docker容器的速度大约快50-60%。我想这是因为 使用xvfb

docker run -v $PWD/examples/docker:/opt/pysrim/ \
           -v /tmp/output:/tmp/output \
           -it costrouc/pysrim sh -c "xvfb-run -a python3.6 /opt/pysrim/ni.py"
ls /tmp/output
<表>最新版本最新版本最新版本包裹状态status许可证license生成状态gitlab pipeline status覆盖范围coverageconda conda downloads文档readthedocs documentation出版物DOI存储库存档doi<表>

文档

链接到有关已读文档的文档

功能

在所有操作系统上自动运行srim和trim

虽然trim是一个很好的代码,但是它有很多缺点 自动化。在输入文件中编写 构建trim.in的gui将在未指定的时刻崩溃。 每个人都遇到过的一个崩溃就是 文本字段不能为空。Trim也有崩溃的倾向 因为它把所有的级联存储在内存中。也就是说,对于大型跑步 当全级联超过1000个离子时,它将耗尽 记忆。pysrim通过提供一个简单的 输入文件的api包装器(支持所有特性); 能够在所有操作系统上运行(使用 葡萄酒 对于Linux和OSX),并允许批量运行计算,请参见 笔记本 示例

下面是使用pysrim运行修剪的hello world示例 计算。注意/tmp/srim是srim可执行文件的路径 目录(srim.exe应位于此目录中)。pysrim将 添加所有必需的输入文件。如果这对你来说是成功的 SRIM窗口将弹出并开始计算。

fromsrimimportIon,Layer,Target,TRIM# Construct a 3MeV Nickel ionion=Ion('Ni',energy=3.0e6)# Construct a layer of nick 20um thick with a displacement energy of 30 eVlayer=Layer({'Ni':{'stoich':1.0,'E_d':30.0,'lattice':0.0,'surface':3.0}},density=8.9,width=20000.0)# Construct a target of a single layer of Nickeltarget=Target([layer])# Initialize a TRIM calculation with given target and ion for 25 ions, quick calculationtrim=TRIM(target,ion,number_ions=25,calculation=1)# Specify the directory of SRIM.exe# For windows users the path will include C://...srim_executable_directory='/tmp/srim'# takes about 10 seconds on my laptopresults=trim.run(srim_executable_directory)# If all went successfull you should have seen a TRIM window popup and run 25 ions!# results is `srim.output.Results` and contains all output files parsed

有关所有可用选项,请参见文档

将srim输出文件复制到目录

SRIM计算完成后,运行复制输出文件 所有输出文件并将其移动到您喜欢的目录。

fromsrimimportTRIMTRIM.copy_output_files('/tmp/srim','/home/costrouc/scratch/srim')

后置处理srim输出为numpy数组

到目前为止,运行修剪计算最困难的部分是分析 输出文件。pysrim带有 电离文件availment.txtnovac.txte2recoil.txtphonon.txtrange.txt, 和 collison.txt。这个 collison.txt文件可能会变得很大,因此冲突解析器使用 可处理任何文件大小的缓冲读取器。附加类 srim.output.results 将处理目录中的所有输出文件并提供 每个解析输出的字典文件。pysrim附带了一些 有用的绘图工具,例如绘制dpa与深度。然而, pysrim的最强大的功能是所有的文本文件 暴露为numpy数组。下面的示例演示如何使用 一个简单的数学和数学。这使得用户能够无缝地使用trim 并进行分析。

fromsrim.outputimportPhonons,Ionizdefplot_damage_energy(folder,ax):phon=Phonons(folder)dx=max(phon.depth)/100.0energy_damage=(phon.ions+phon.recoils)*dxax.plot(phon.depth,energy_damage/phon.num_ions,label='{}'.format(folder))returnsum(energy_damage)defplot_ionization(folder,ax):ioniz=Ioniz(folder)dx=max(ioniz.depth)/100.0ax.plot(ioniz.depth,ioniz.ions,label='Ionization from Ions')ax.plot(ioniz.depth,ioniz.recoils,label='Ionization from Recoils')

folders设置为srim输出的目录列表。见 分析 详细的例子。注意每个srim有一个python类 输出文件并提供对每个列的简单访问。这确实需要 一些复杂的正则表达式,以便正确工作。

folders=['test_files/2','test_files/4']image_directory='examples/images'fig,axes=plt.subplots(1,len(folders),sharey=True,sharex=True)forax,folderinzip(np.ravel(axes),folders):plot_damage_energy(folder,ax)plot_ionization(folder,ax)ax.legend()ax.set_ylabel('eV')ax.set_xlabel('Depth [Angstroms]')fig.suptitle('Ionization Energy vs Depth',fontsize=15)fig.set_size_inches((20,6))fig.savefig(os.path.join(image_directory,'ionizationvsdepth.png'),transparent=True)

srim heatmap目录。我 在一个 出版物

安装

通过PIP或Conda安装pysrim很容易。

PYPI上提供

  • pip安装pysrim

conda上提供

  • conda安装-c costrouc pysrim

Docker提供

  • Docker Pull Costrouc/Pysrim

除非你使用的是docker镜像,否则你需要安装srim 在您的机器上使用Linux、OSX和 Windows .

码头工人

有一个docker容器已经有了pysrim和srim 安装。一些有趣的把戏是用葡萄酒和 伪造x11会话。xvfb run-a创建一个假x11会话 在Docker容器中,因此允许SRIM在服务器上运行 没有显示。这是我经常使用的运行srim的方法。

图片:costrouc/pysrim

Linux和OSX

对于linux操作系统,首先需要安装wine。有关在OSX上安装Wine的信息,请参见这篇文章。对于linux,您通常可以通过apt get install wineyum install wine安装wine。SRIM是与葡萄酒兼容

安装Wine后,请运行安装程序脚本。

单击"提取",然后单击"完成"。

窗口

我的一个同事让它很容易在窗户上工作,但是我 我自己没有经验。只需在srim.org下载可执行文件。接下来,您将把srim文件解压到windows机器上的一个目录中。注意安装目录,因为需要从trim.run()

贡献

所有贡献,错误报告,错误修复,文档改进, 欢迎改进和想法!这些应该在 Gitlab存储库。吉图布群岛 仅用于可见性。

贡献者:

许可证

麻省理工学院

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

推荐PyPI第三方库


热门话题
gwt java。lang.UnsupportedClassVersionError:不受支持的专业。小版本51.0   java XML解析器trycatch不工作   java Jackson MRBean不工作,无法构造实例   javascript是检查参数的更好方法吗?   java在发生冲突时从ArrayList中删除对象   JavaSpringWebFlux和KeyClope JWTRESTAPI   java Selected选项在微调器中不可见   java在增加分区后,有没有办法在ApacheKafka中保持顺序?   java添加SourceRoot会导致spring启动应用程序出错   java Spring引导:任何bean都没有实现ReactiveCrudepository   java无法注册我的自定义AbstractAnnotationConfigDispatcherServletInitializer   TCP连接上的java Caesar密码   java树集排序不正确   java如何在自定义查询中加载@ElementCollection?