Difference between revisions of "User:Remig/plico/toab"
< User:Remig | plico
Jump to navigation
Jump to search
(Do not var globals) |
(lc all functions) |
||
Line 5: | Line 5: | ||
Script=script <path to your scripts directory>/toab.spt;plicoToab | Script=script <path to your scripts directory>/toab.spt;plicoToab | ||
</pre>saved as plicotoab.macro in your .jmol/macros directory as described in [[Macro]]. | </pre>saved as plicotoab.macro in your .jmol/macros directory as described in [[Macro]]. | ||
+ | |||
Copy and paste the following into a text editor and save in your scripts directory as toab.spt. | Copy and paste the following into a text editor and save in your scripts directory as toab.spt. | ||
<pre># toAlphBeta - Jmol script by Ron Mignery | <pre># toAlphBeta - Jmol script by Ron Mignery | ||
− | # v1. | + | # v1.2 beta 5/16/2014 -lc all functions |
# | # | ||
# Move a stretch of polypeptide from alpha to beta or vice versa | # Move a stretch of polypeptide from alpha to beta or vice versa | ||
Line 14: | Line 15: | ||
gToabAlt = FALSE | gToabAlt = FALSE | ||
− | # Bound to LEFT-UP by | + | # Bound to LEFT-UP by to_ab_enable_drag |
− | function | + | function to_ab_drag_done_mb() { |
if (not gToabAlt) { | if (not gToabAlt) { | ||
if (gNanchorIdx >= 0) { | if (gNanchorIdx >= 0) { | ||
Line 28: | Line 29: | ||
} | } | ||
− | # Bound to ALT-SHIFT-LEFT-DRAG by | + | # Bound to ALT-SHIFT-LEFT-DRAG by to_ab_enable_drag |
− | function | + | function to_ab_drag_2_mb() { |
gToabAlt = TRUE | gToabAlt = TRUE | ||
− | + | to_ab_drag() | |
} | } | ||
− | # Bound to ALT-LEFT-DRAG by | + | # Bound to ALT-LEFT-DRAG by to_ab_enable_drag |
function toabDragMB() { | function toabDragMB() { | ||
gToabAlt = FALSE | gToabAlt = FALSE | ||
− | + | to_ab_drag() | |
} | } | ||
− | function | + | function to_ab_drag() { |
if (not gBusy) { | if (not gBusy) { | ||
gBusy = TRUE | gBusy = TRUE | ||
Line 151: | Line 152: | ||
# Called by tugCargoMB when gToab is true | # Called by tugCargoMB when gToab is true | ||
− | function | + | function to_ab_enable_drag() { |
gEcho = "____Alpha <==> Beta____|ALT-CLICK=mark block|SHIFT-CLICK=anchors" + | gEcho = "____Alpha <==> Beta____|ALT-CLICK=mark block|SHIFT-CLICK=anchors" + | ||
"|ALT-DRAG=move|SHIFT-ALT-DRAG=alt move|DOUBLE-CLICK=exit" | "|ALT-DRAG=move|SHIFT-ALT-DRAG=alt move|DOUBLE-CLICK=exit" | ||
Line 160: | Line 161: | ||
bind "ALT-LEFT-UP" "tugDragDoneMB"; | bind "ALT-LEFT-UP" "tugDragDoneMB"; | ||
bind "ALT-LEFT-DRAG" "toabDragMB"; | bind "ALT-LEFT-DRAG" "toabDragMB"; | ||
− | bind "ALT-SHIFT-LEFT-UP" " | + | bind "ALT-SHIFT-LEFT-UP" "to_ab_drag_done_mb"; |
− | bind "ALT-SHIFT-LEFT-DRAG" " | + | bind "ALT-SHIFT-LEFT-DRAG" "to_ab_drag_2_mb"; |
unbind "SHIFT-LEFT-CLICK" | unbind "SHIFT-LEFT-CLICK" | ||
Line 169: | Line 170: | ||
} | } | ||
− | # Bound to ALT-LEFT-CLICK by | + | # Bound to ALT-LEFT-CLICK by plico_to_ab |
− | function | + | function to_ab_cargo_mb() { |
− | print " | + | print "to_ab_cargo_mb()"#TBD |
gToab = TRUE | gToab = TRUE | ||
tugCargoMB | tugCargoMB | ||
Line 177: | Line 178: | ||
# Top level of ToAlphaBeta | # Top level of ToAlphaBeta | ||
− | function | + | function plico_to_ab() { |
# Load tug functions if not already | # Load tug functions if not already | ||
Line 189: | Line 190: | ||
gPlico = "TO ALPHA/BETA" | gPlico = "TO ALPHA/BETA" | ||
− | + | plico_prelim(TRUE) | |
gEcho = ("____Alpha <==> Beta____|ALT-CLICK=mark block|DOUBLE-CLICK=exit") | gEcho = ("____Alpha <==> Beta____|ALT-CLICK=mark block|DOUBLE-CLICK=exit") | ||
Line 197: | Line 198: | ||
bind "ALT-LEFT-CLICK" "_pickAtom"; | bind "ALT-LEFT-CLICK" "_pickAtom"; | ||
− | bind "ALT-LEFT-CLICK" "+: | + | bind "ALT-LEFT-CLICK" "+:to_ab_cargo_mb"; |
− | bind "DOUBLE" " | + | bind "DOUBLE" "plico_exit"; |
} | } | ||
− | # End of TOAB.SPT | + | # End of TOAB.SPT</pre> |
− | </pre> |
Revision as of 16:28, 16 May 2014
ToAlphaBeta allows the user to mark a section of a polypeptide chain to fold towards an alpha helix configuration or towards a beta strand configuration as described here.
ToAlphaBeta is a member of the Plico suite of protein folding tools described here. It may be installed and accessed as a macro with the file:
Title=PLICO To Alpha/Beta Script=script <path to your scripts directory>/toab.spt;plicoToab
saved as plicotoab.macro in your .jmol/macros directory as described in Macro.
Copy and paste the following into a text editor and save in your scripts directory as toab.spt.
# toAlphBeta - Jmol script by Ron Mignery # v1.2 beta 5/16/2014 -lc all functions # # Move a stretch of polypeptide from alpha to beta or vice versa # gToab = FALSE gToabAlt = FALSE # Bound to LEFT-UP by to_ab_enable_drag function to_ab_drag_done_mb() { if (not gToabAlt) { if (gNanchorIdx >= 0) { tugDragDoneMB() } } else { if (gCanchorIdx >= 0) { tugDragDoneMB() } } } # Bound to ALT-SHIFT-LEFT-DRAG by to_ab_enable_drag function to_ab_drag_2_mb() { gToabAlt = TRUE to_ab_drag() } # Bound to ALT-LEFT-DRAG by to_ab_enable_drag function toabDragMB() { gToabAlt = FALSE to_ab_drag() } function to_ab_drag() { if (not gBusy) { gBusy = TRUE var dx = (40.0 * (_mouseX - gMouseX))/_width var dy = (40.0 * (_mouseY - gMouseY))/_height var q = quaternion() var ptd = {@dx @dy 0} var pt = (!q)%ptd if (distance(pt, {0 0 0}) > 0.004) { # If sidechain mode if (gSCidx >= 0) { if ({atomIndex=gSCidx}.atomName == "O") { dir = ((abs(dx) > abs(dy)) ? ((dx < 0) ? 2 : -2) : ((dy < 0) ? 2 : -2)) counterRotate(gSCidx, dir, not gToabAlt) } else { gSCcheck = not gToabAlt tugSideChain(pt) } } # Else else { # If new drag if (gNewDrag) { gNewDrag = FALSE save state gState } # Move the cargo select {gCargoSet} var phi = ((dx < 0) ? -57 : -90) var psi = ((dx < 0) ? -47 : 120) # Move between alpha and beta var nIdx = gNcargoIdx var iNidx = {(atomno=@{{chain=gChain}.atomno.min}) and (chain=gChain)}.atomIndex var maxIdx = {(atomno=@{{chain=gchain}.atomno.max}) and (chain=gchain)}.atomIndex var minIdx = {(atomno=@{{chain=gchain}.atomno.min}) and (chain=gchain)}.atomIndex while (TRUE) { # Adjust phi var ncIdx = getNwardBBidx(nIdx, gChain) var caIdx = getCwardBBidx(nIdx, gChain) var cIdx = getCwardBBidx(caIdx, gChain) var dh= angle({atomIndex=ncIdx}, {atomIndex=nIdx}, {atomIndex=caIdx}, {atomIndex=cIdx}) var dir = ((phi > dh) ? abs(8*dx) : -(abs(8*dx))) if (not gToabAlt) { selectNwardIdx(nIdx, ((gNanchorIdx >= 0) ? gNcargoIdx : minIdx)) } else { selectCwardIdx(caIdx, ((gCanchorIdx >= 0) ? gCcargoIdx : maxIdx)) } if (abs(phi-dh) > 0.5) { rotateSelectedRecord(caIdx, {atomIndex=nIdx}, dir) } # Adjust psi var cnIdx = getCwardBBidx (cIdx, gChain) dh= angle({atomIndex=nIdx}, {atomIndex=caIdx}, {atomIndex=cIdx}, {atomIndex=cnIdx}) dir = ((psi > dh) ? abs(8*dx) : -(abs(8*dx))) if (not gToabAlt) { selectNwardIdx(caIdx, ((gNanchorIdx >= 0) ? gNcargoIdx : minIdx)) } else { selectCwardIdx(cIdx, ((gCanchorIdx >= 0) ? gCcargoIdx : maxIdx)) } if (abs(psi-dh) > 0.5) { rotateSelectedRecord(cIdx, {atomIndex=caIdx}, dir) } if (gCcargoIdx== cIdx) { break } nIdx = cnIdx } # endwhile } gMouseX = _mouseX gMouseY = _mouseY } select {gCargoSet} var lcset = (within(kCtolerance, FALSE, {selected}) and not {selected} and not connected({selected})) gOk2 = TRUE if (lcset.size > 0) { for (var i = 1; i <= lcset.size; i++) { handleCollisions2(lcset[i].atomIndex) } } var bkc = (gOk2 ? "yellow" : "pink") background ECHO @bkc gBusy = FALSE } } # Called by tugCargoMB when gToab is true function to_ab_enable_drag() { gEcho = "____Alpha <==> Beta____|ALT-CLICK=mark block|SHIFT-CLICK=anchors" + "|ALT-DRAG=move|SHIFT-ALT-DRAG=alt move|DOUBLE-CLICK=exit" echo @gEcho # Allow atoms to be dragged bind "ALT-LEFT-DOWN" "tugMarkMB"; bind "ALT-LEFT-UP" "tugDragDoneMB"; bind "ALT-LEFT-DRAG" "toabDragMB"; bind "ALT-SHIFT-LEFT-UP" "to_ab_drag_done_mb"; bind "ALT-SHIFT-LEFT-DRAG" "to_ab_drag_2_mb"; unbind "SHIFT-LEFT-CLICK" bind "SHIFT-LEFT-CLICK" "_pickAtom"; bind "SHIFT-LEFT-CLICK" "+:tugAnchorMB"; } # Bound to ALT-LEFT-CLICK by plico_to_ab function to_ab_cargo_mb() { print "to_ab_cargo_mb()"#TBD gToab = TRUE tugCargoMB } # Top level of ToAlphaBeta function plico_to_ab() { # Load tug functions if not already if (kTug < 3) { script $SCRIPT_PATH$tug.spt if (kTug < 3) { prompt ("A newer version of TUG.SPT is required") quit } } gPlico = "TO ALPHA/BETA" plico_prelim(TRUE) gEcho = ("____Alpha <==> Beta____|ALT-CLICK=mark block|DOUBLE-CLICK=exit") echo @gEcho gChain = "" unbind bind "ALT-LEFT-CLICK" "_pickAtom"; bind "ALT-LEFT-CLICK" "+:to_ab_cargo_mb"; bind "DOUBLE" "plico_exit"; } # End of TOAB.SPT