#vmd默认使用stride计算蛋白二级结构,这里给出vmd提出dssp计算的二级结构并输出到一个文件中用于作图,文件输出格式类似Amber的输出格式,其中X代表不规则卷曲或者loop,将以下代码保存为test.tcl可以直接在终端下运行以下命令:
#vmd test.psf test.dcd -dispdev text -e test.tcl
#如果是amber的拓扑文件和轨迹则为
#vmd -parm7 test.prmtop -crdbox test.mdcrd -dispdev text -e test.tcl
#输出的文件为sec4traj.txt
1 # dealing with data in DSSP file
2 proc myproc1 {a b framei} {
3 # creat a empty list
4 set newsecdata [list]
5 set linenumber 0
6 foreach a $b {
7 incr linenumber
8 if {[string equal [string index $a 2] #]} {
9 puts "The line number is $linenumber"
10 set secdata [lrange $b $linenumber end]
11 # puts $secdata
12 foreach secinfo $secdata {
13 set sectype [string index $secinfo 16]
14 if {[string is space $sectype]} then {
15 lappend newsecdata X
16 } else {
17 lappend newsecdata $sectype
18 }
19 }
20 }
21 }
22 set mynewsecdata [join $newsecdata \t]
23 set secdataframe [linsert $mynewsecdata 0 $framei]
24 puts $secdataframe
25 set sectraj [open sec4traj.txt a]
26 puts $sectraj $secdataframe
27 close $sectraj
28 }
29
30 # generate each frame pdb file and analyze secondary structure with dssp
31 set n [molinfo top get numframes]
32 puts "===Analysis number of frames: $n"
33 set myprotein [atomselect top protein]
34 #write resids
35 set myresids [lsort -integer -unique [$myprotein get resid]]
36
37 set sectraj [open sec4traj.txt w]
38 puts $sectraj $myresids
39 close $sectraj
40
41 #analysis of frames
42 for { set i 0 } { $i < $n } { incr i } {
43 $myprotein frame $i
44 $myprotein update
45 $myprotein writepdb myptrotein_$i.pdb
46 exec mkdssp -i myptrotein_$i.pdb -o myptrotein_$i.dssp
47 注意,这里的mkdssp是你的dssp程序的命令,有的人安装了是dssp,我这里是mkdssp,只要换成你安装的名字即可
48 set dsspfile [open myptrotein_$i.dssp r]
49 set dsspline [read $dsspfile ]
50 set dsspdata [split $dsspline \n]
51 close $dsspfile
52 myproc1 splitdata $dsspdata $i
53
54
55 file delete myptrotein_$i.pdb
56 file delete myptrotein_$i.dssp
57 }
加载中,请稍候......