版块导航
正在加载中...
客户端APP下载
论文辅导
申博辅导
登录
注册
帖子
帖子
用户
本版
应《网络安全法》要求,自2017年10月1日起,未进行实名认证将不得使用互联网跟帖服务。为保障您的帐号能够正常使用,请尽快对帐号进行手机号验证,感谢您的理解与支持!
24小时热门版块排行榜
>
论坛更新日志
(3960)
>
文献求助
(476)
>
虫友互识
(374)
>
导师招生
(276)
>
休闲灌水
(206)
>
硕博家园
(165)
>
招聘信息布告栏
(159)
>
考博
(94)
>
教师之家
(78)
>
论文投稿
(75)
>
绿色求助(高悬赏)
(73)
>
博后之家
(68)
>
公派出国
(62)
>
基金申请
(51)
>
考研
(48)
>
找工作
(40)
小木虫论坛-学术科研互动平台
»
计算模拟区
»
分子模拟
»
Monte Carlo
»
【原创】MAPS中构筑超晶胞的python程序
3
1/1
返回列表
查看: 654 | 回复: 2
只看楼主
@他人
存档
新回复提醒
(忽略)
收藏
在APP中查看
zyj8119
木虫
(著名写手)
模拟EPI: 10
应助: 65
(初中生)
贵宾: 0.003
金币: 915.1
散金: 1440
红花: 35
帖子: 2936
在线: 1329.4小时
虫号: 664177
注册: 2008-11-29
性别: GG
专业: 理论和计算化学
[交流]
【原创】MAPS中构筑超晶胞的python程序
已有2人参与
CODE:
#!/usr/bin/python
###########################################################################
# buildCluster.py - description
# -------------------------------
# begin : Fri Dec 15 16:11:04 CET 2006
# copyright : (C) 2006 by Scienomics
# email : Joerg-Ruediger.Hill@scienomics.com
###########################################################################
#
###########################################################################
# #
# This program and all subroutines, data, and files used by it are #
# protected by copyright and hence may not be used, copied, modified #
# transmitted, inspected, or executed by any means including the use #
# of electronic data processing equipment, xerography, or any other #
# methods without the express written permission of the copyright #
# holder. #
# #
# Copyright (C) 2006 Scienomics S. A. #
# #
###########################################################################
#
# $Id: buildCluster.py,v 1.10 2010/03/29 15:15:56 jrh Exp $
# $Log: buildCluster.py,v $
# Revision 1.10 2010/03/29 15:15:56 jrh
# Moved to new way of retrieving plugin objects
#
# Revision 1.9 2008/10/20 09:25:06 lperi
# Clear undo stack (bug 2562).
#
# Revision 1.8 2008/10/14 15:21:17 jrh
# Fixed bug 2520
#
# Revision 1.7 2008/01/16 12:21:18 jrh
# Moved to Qt4
#
# Revision 1.6 2007/01/16 10:28:26 jrh
# Removed automatic creation of cell since this might crash
#
# Revision 1.5 2006/12/15 16:07:31 jrh
# Added header and documentation
#
#
import Maps
import MapsChemistryDataModel
import MapsViewer
from PyQt4 import *
class ClusterBuilder:
""" This class implements a cluster generating algorithm
by cutting atoms from a periodic system based on a
distance criterion. The class takes either the active
molecule or asks the user to load a molecule if no
active molecule is found, puts a molecule into a box
at density 1.0 if the system is not periodic already,
and builds a cluster by copying all atoms which are
within 5 Ang from the central atom to a new model.
"""
app=Maps.MapsApp.getContainer()
cdm=MapsChemistryDataModel.ChemistryDataModel.get()
viewerPlugin=MapsViewer.ViewerPlugin.get()
project=None
molecule=None
def loadMolecule(self):
activeViewer=self.viewerPlugin.getActiveViewer()
if activeViewer != None:
self.molecule=activeViewer.getMolecule()
projectName=self.cdm.findProjectNameForMolecule(self.molecule)
self.project=self.cdm.findProjectByName(projectName)
QtGui.qApp.processEvents()
return(0)
else:
QtGui.QMessageBox.information(self.app, "Note", "Please load a molecule from the\nfollowing dialog.")
# Load a molecule from an existing file
dialog=self.app.fileDialog
dialog.setFileMode(QtGui.QFileDialog.ExistingFile)
dialog.setWindowTitle("Open file")
filters=QtCore.QStringList()
filters.append("All files (*)")
dialog.setFilters(filters)
dialog.selectFile("")
if dialog.exec_(Maps.FileDialog.DATA) == QtGui.QDialog.Accepted:
fileName=str(dialog.selectedFiles()[0])
self.app.openDocumentFile(fileName, None, "")
projects=self.cdm.getProjects()
self.project=projects[0]
molecules=self.project.getMolecules()
self.molecule=molecules[0]
self.viewerPlugin.start(self.molecule)
QtGui.qApp.processEvents()
return(0)
else:
return(1)
def createSuperCell(self):
# Create a 3 x 3 x 3 super cell. If the system is not periodic tell
# the user and exit
if not self.molecule.isPeriodic():
QtGui.QMessageBox.information(self.app, "Note", "Please use a periodic system with this script.")
return(0);
else:
cell=self.molecule.getActiveConformation().getUnitcell()
cell.setDuplicate(3, 3, 3, 1)
cell.makeSuperCell(1)
QtGui.qApp.processEvents()
return(1)
def cutCluster(self):
# Cut a cluster by finding the atom closest to the center of the
# super cell and including all atoms at a distance of up to
# 5.0 Ang from this atom
center=self.molecule.calculateCenterOfGravity(self.molecule.atoms)
min=100.0
centerAtom=None
for atom in self.molecule.atoms:
pos=atom.getCoordinates()
diff=pos-center
if diff.abs() < min:
min=diff.abs()
centerAtom=atom
viewer=self.viewerPlugin.getActiveViewer()
# Clear the undo stack to prevent a discontinuity
# in the recorded editing actions which could
# cause a crash
viewer.clearUndoStack()
viewer.setSelectionMode(MapsViewer.Viewer.DISTANCE, 5.0)
viewer.selectAtoms(centerAtom, 1)
viewer.copy()
# Create a new model in the same project and paste the cluster
# in there
cluster=MapsChemistryDataModel.Molecule(self.cdm)
cluster.setName("Cluster")
self.project.addMolecule(cluster)
self.viewerPlugin.start(cluster)
clusterViewer=self.viewerPlugin.getActiveViewer()
clusterViewer.paste()
clusterViewer.centerMolecule()
clusterViewer.getMoleculeRenderer().setSelection(cluster.atoms, 0)
QtGui.qApp.processEvents()
def run(self):
if not self.loadMolecule():
if self.createSuperCell():
self.cutCluster()
#-------------------------
if __name__ == '__main__':
builder=ClusterBuilder()
builder.run()
回复此楼
» 本帖已获得的红花(最新10朵)
liuying287
» 猜你喜欢
职称评审没过,求安慰
已经有41人回复
回收溶剂求助
已经有7人回复
硝基苯如何除去
已经有3人回复
A期刊撤稿
已经有4人回复
垃圾破二本职称评审标准
已经有17人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
求助文献
已经有3人回复
三无产品还有机会吗
已经有6人回复
高级回复
好好学习,天天向上。
1楼
2010-12-26 17:30:30
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
liuying287
送鲜花一朵
高级回复
2楼
2012-03-22 16:11:27
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
juwendy
铁虫
(正式写手)
应助: 2
(幼儿园)
金币: 4898.8
帖子: 422
在线: 399.4小时
虫号: 796719
注册: 2009-06-18
专业: 岩土与基础工程
顶一个,支持楼主。
回复此楼
3楼
2012-03-22 21:09:32
已阅
回复此楼
关注TA
给TA发消息
送TA红花
TA的回帖
相关版块跳转
第一性原理
量子化学
计算模拟
分子模拟
仿真模拟
程序语言
我要订阅楼主
zyj8119
的主题更新
3
1/1
返回列表
如果回帖内容含有宣传信息,请如实选中。否则帐号将被全论坛禁言
普通表情
龙
兔
虎
猫
高级回复
(可上传附件)
百度网盘
|
360云盘
|
千易网盘
|
华为网盘
在新窗口页面中打开自己喜欢的网盘网站,将文件上传后,然后将下载链接复制到帖子内容中就可以了。
信息提示
关闭
请填处理意见
关闭
确定