-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcoarseGrainIt.tcl
61 lines (57 loc) · 1.71 KB
/
coarseGrainIt.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package require multiscaletools
package require readParTop
package require writelammps
package require psfgen
proc coarseGrainIt {cgfile psfR pdbR psfL pdbL } {
merge_structure $psfR $pdbR $psfL $pdbL R L
::readParTop::read_topology $::env(MULTISCALE)/top_lbm.rtf
::readParTop::read_parameters $::env(MULTISCALE)/par_lbm.prm
::multiscaletools::read_db $cgfile
set ::multiscaletools::DEBUG 0
set AA [mol new complex.psf]
mol addfile complex.pdb
mol addfile complex.psf
::multiscaletools::apply_database $AA CG_complex.pdb out.log 0
::multiscaletools::psfgen CG_complex.pdb $AA CG_complex.psf out.log $::readParTop::topology
mol delete $AA
set CG [mol new CG_complex.psf]
mol addfile CG_complex.pdb
mol addfile CG_complex.psf
set idCG [[atomselect top "all"] molid]
set allCG [atomselect top "all"]
::multiscaletools::set_connectivitytype $idCG $::readParTop::parameters
::multiscaletools::write_dipole $idCG [topo -molid $idCG getanglelist] $::readParTop::patches
::writelammps::writelammpsdata $idCG CG_lammps.data CG $allCG $::readParTop::parameters $::multiscaletools::dipoles $::multiscaletools::quaternions
}
proc merge_structure {psfR pdbR psfL pdbL chainR chainL} {
changeChainSeg $psfR $pdbR $chainR
changeChainSeg $psfL $pdbL $chainL
resetpsf
readpsf $psfR
coordpdb $pdbR
readpsf $psfL
coordpdb $pdbL
writepsf complex.psf
writepdb complex.pdb
}
proc changeChainSeg {psf pdb chain} {
set R [mol new $psf]
mol addfile $pdb
set r [atomselect $R all]
$r set chain $chain
set ss [list]
set s [$r get segname]
set ps [lindex $s 0]
set i 1
foreach S $s {
if {$S!=$ps} {
incr i
}
lappend ss $chain$i
set ps $S
}
$r set segname $ss
$r writepsf $psf
$r writepdb $pdb
mol delete $R
}