计算化学公社

标题: 在VMD中采用tcl脚本为碳环(全碳环,苯环)内部填充颜色 [打印本页]

作者
Author:
liucw    时间: 2022-10-18 22:41
标题: 在VMD中采用tcl脚本为碳环(全碳环,苯环)内部填充颜色
本帖最后由 liucw 于 2022-10-18 23:03 编辑

###绘制颜色设置为红色red
draw color red
###在vmd中按碳环的顺序为原子编号index 365 430 231 447 121 527 分别是碳原子的index
proc dr {C1 C2 C3 C4 C5 C6} {
set 1 $C1
set 2 $C2
set 3 $C3
set 4 $C4
set 5 $C5
set 6 $C6
###将index编号365 430 231 447 121 527 的原子创建研究对象 $sel;
set sel [atomselect top "index $1 or index $2 or index $3 or index $4 or index $5 or index $6"]
###利用$sel get命令得到各原子坐标
set s1 [atomselect top "index $1"]
set s2 [atomselect top "index $2"]
set s3 [atomselect top "index $3"]
set s4 [atomselect top "index $4"]
set s5 [atomselect top "index $5"]
set s6 [atomselect top "index $6"]
###利用measure center $sel命令得到质心坐标;weight mass质心,若不加,则为几何中心;
set com [measure center $sel weight mass]
###利用lindex selection0 num 命令得到x y z 的值;
set xq [lindex $com  0]
set yq [lindex $com  1]
set zq [lindex $com  2]
set ss1 [lindex [$s1 get {x y z}] 0]
set ss2 [lindex [$s1 get {x y z}] 1]
set ss3 [lindex [$s1 get {x y z}] 2]
set ss4 [lindex [$s2 get {x y z}] 0]
set ss5 [lindex [$s2 get {x y z}] 1]
set ss6 [lindex [$s2 get {x y z}] 2]
set ss7 [lindex [$s3 get {x y z}] 0]
set ss8 [lindex [$s3 get {x y z}] 1]
set ss9 [lindex [$s3 get {x y z}] 2]
set ss10 [lindex [$s4 get {x y z}] 0]
set ss11 [lindex [$s4 get {x y z}] 1]
set ss12 [lindex [$s4 get {x y z}] 2]
set ss13 [lindex [$s5 get {x y z}] 0]
set ss14 [lindex [$s5 get {x y z}] 1]
set ss15 [lindex [$s5 get {x y z}] 2]
set ss16 [lindex [$s6 get {x y z}] 0]
set ss17 [lindex [$s6 get {x y z}] 1]
set ss18 [lindex [$s6 get {x y z}] 2]
###分别以六边形一条边上的两个原子和质心画一个三角形平面,绘制六组三角形,自此六边碳环被填充完毕!
draw triangle "$xq $yq $zq" "$ss1 $ss2 $ss3" "$ss4 $ss5 $ss6"
draw triangle "$xq $yq $zq" "$ss7 $ss8 $ss9" "$ss4 $ss5 $ss6"
draw triangle "$xq $yq $zq" "$ss7 $ss8 $ss9" "$ss10 $ss11 $ss12"
draw triangle "$xq $yq $zq" "$ss10 $ss11 $ss12" "$ss13 $ss14 $ss15"
draw triangle "$xq $yq $zq" "$ss13 $ss14 $ss15" "$ss16 $ss17 $ss18"
draw triangle "$xq $yq $zq" "$ss1 $ss2 $ss3" "$ss16 $ss17 $ss18"
}

作者
Author:
suihg    时间: 2022-10-19 07:55
收藏了
作者
Author:
xiaoj    时间: 2023-10-23 21:50
您好,请问对于碳环数量如何统计?比如五元碳环、六元碳环等。谢谢!
作者
Author:
sobereva    时间: 2023-10-24 04:55
xiaoj 发表于 2023-10-23 21:50
您好,请问对于碳环数量如何统计?比如五元碳环、六元碳环等。谢谢!

如下文所说ringsize 5 from AAA选择语句选中的是处于AAA中五元环上的原子。获取相应的原子数,除以5就是这个区域里五元环数目


VMD里原子选择语句的语法和例子
http://sobereva.com/504http://bbs.keinsci.com/thread-14267-1-1.html


作者
Author:
xiaoj    时间: 2023-10-24 08:53
sobereva 发表于 2023-10-24 04:55
如下文所说ringsize 5 from AAA选择语句选中的是处于AAA中五元环上的原子。获取相应的原子数,除以5就是 ...

感谢您的回复。您的博文我看过,通过ringsize/maxringsize可以筛选不同的碳环并着色。但是有两个问题:一是在此基础上是如何获取对应的原子数;二是如果两个碳环共用碳原子的情况,比如石墨烯结构,原子数/5应该不等于五元环数目。谢谢。
作者
Author:
sobereva    时间: 2023-10-25 00:40
xiaoj 发表于 2023-10-24 08:53
感谢您的回复。您的博文我看过,通过ringsize/maxringsize可以筛选不同的碳环并着色。但是有两个问题:一 ...

把五元环上的原子作为atomselect对象选中后,就可以得到它们的序号。如果一个原子同时和三个其它这些原子成键,说明是被两个或三个环共享的。再根据它所相连的其它原子与几个这类原子相连,就能判断当前原子是被两个还是三个环共享,等等。诸如此般,被n个环共享的原子就当做有n个,然后再除以5即可。
作者
Author:
lyj714    时间: 2023-10-25 11:20
xiaoj 发表于 2023-10-23 21:50
您好,请问对于碳环数量如何统计?比如五元碳环、六元碳环等。谢谢!

可以自行基于vmd的tcl写脚本程序来进行识别,不过需要有一定的编程基础。
作者
Author:
xiaoj    时间: 2023-10-27 14:36
sobereva 发表于 2023-10-25 00:40
把五元环上的原子作为atomselect对象选中后,就可以得到它们的序号。如果一个原子同时和三个其它这些原子 ...

谢谢老师,基本思路我了解了。
作者
Author:
xiaoj    时间: 2023-10-27 14:36
lyj714 发表于 2023-10-25 11:20
可以自行基于vmd的tcl写脚本程序来进行识别,不过需要有一定的编程基础。

我也知道基于tcl脚本写。
作者
Author:
biancheng159    时间: 2024-1-15 21:32
dr 365 430 231 447 121 527一次只能着色一个环?
若对于大体系结合ringsize/maxringsize筛选不同碳环并快速着上不同色,如何实现呢?




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3