Difference between revisions of "User:Remig/plico/toABnt"
m |
(Add multi-frame support) |
||
Line 1: | Line 1: | ||
− | '''ToABnt''' allows the user to convert a polynucleotide chain or chain pair from A-form to B-form and ''vice versa''. | + | '''ToABnt''' allows the user to convert a polynucleotide chain or chain pair from A-form to B-form and ''vice versa''. Both chains are converted in double helixes. |
When you ALT-CLICK on any atom, you are prompted to convert its chain from its current form to either the A-form or the B-form. The two forms differ primarily in the pucker conformation of their sugar moieties. The A-form has its sugars in the C3'-endo conformation whereas the B-form has it in the C2'-endo conformation. The A-form is characteristic of RNA while the B-form is characteristic of DNA. | When you ALT-CLICK on any atom, you are prompted to convert its chain from its current form to either the A-form or the B-form. The two forms differ primarily in the pucker conformation of their sugar moieties. The A-form has its sugars in the C3'-endo conformation whereas the B-form has it in the C2'-endo conformation. The A-form is characteristic of RNA while the B-form is characteristic of DNA. | ||
Line 11: | Line 11: | ||
Copy and paste the following into a text editor and save in your scripts directory as toABnt.spt. | Copy and paste the following into a text editor and save in your scripts directory as toABnt.spt. | ||
<pre># toABnt - Jmol script by Ron Mignery | <pre># toABnt - Jmol script by Ron Mignery | ||
− | # v1. | + | # v1.8 beta 7/11/2014 -add multi-frame support |
# | # | ||
# Convert a polynucleotide chain from A-form to B-form or vice versa | # Convert a polynucleotide chain from A-form to B-form or vice versa | ||
Line 33: | Line 33: | ||
if (not gBusy) { | if (not gBusy) { | ||
gBusy = TRUE | gBusy = TRUE | ||
− | + | var f = (_frameID/1000000) | |
− | + | var m = (_frameID%1000000) | |
− | + | var toab = (gToA ? "A" : "B") | |
− | + | var a = (gToA ? 20.8 : 19.3) | |
− | + | var s = (gToA ? 4.44 : 4.73) | |
− | + | ||
− | + | var minres = {(chain=gChain1) and (file=f)and (model=m)}.resno.min | |
− | + | var maxres = {(chain=gChain1) and (file=f)and (model=m)}.resno.max | |
− | + | var maxP = atom_rcn(maxres, gChain1, "P") | |
− | + | var cp = maxP.xyz | |
− | + | var w = array() | |
+ | for (var i = maxres-1; i <= minres; i--) { | ||
+ | w += who_pairs(i, gChain1) | ||
} | } | ||
− | + | if (auto == FALSE) { | |
− | + | var isForm = (is_form_a( maxres, gChain1) ? "A" : "B") | |
− | + | var p = prompt(format("Convert chain %s from %s-form to:", | |
− | + | gChain1, isForm), "A-form|B-form", TRUE) | |
− | + | if (p == "A-form") { | |
− | + | toab = "A" | |
− | + | a = 20.8 | |
− | + | s = 4.44 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | else if (p == "B-form") { | |
− | + | toab = "B" | |
− | + | a = 19.3 | |
− | + | s = 4.73 | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
else { | else { | ||
− | + | color {all} @gScheme | |
− | + | return # early exit | |
− | |||
− | |||
− | |||
− | |||
} | } | ||
− | + | background ECHO pink | |
− | + | refresh | |
− | + | print format("Converting to %s", p) | |
− | + | } | |
− | + | adjust_nts(minres, maxres, gChain1, toab, a, s) | |
− | + | select {(file=f)and (model=m)} | |
− | + | var v = cp - maxP.xyz | |
− | + | translateSelected @v | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
} | } | ||
} | } | ||
Line 235: | Line 78: | ||
# Bound to ALT-LEFT-CLICK by plicoto_ab_nt | # Bound to ALT-LEFT-CLICK by plicoto_ab_nt | ||
function to_ab_chain_mb() { | function to_ab_chain_mb() { | ||
− | color { | + | color {(file=f)and (model=m)} @gScheme |
gChain1 = {atomIndex=_atomPicked}.chain | gChain1 = {atomIndex=_atomPicked}.chain | ||
− | color {chain=gChain1} @gAltScheme | + | color {(chain=gChain1) and (file=f)and (model=m)} @gAltScheme |
refresh | refresh | ||
to_ab_nt(FALSE) | to_ab_nt(FALSE) |
Revision as of 14:09, 16 July 2014
ToABnt allows the user to convert a polynucleotide chain or chain pair from A-form to B-form and vice versa. Both chains are converted in double helixes. When you ALT-CLICK on any atom, you are prompted to convert its chain from its current form to either the A-form or the B-form. The two forms differ primarily in the pucker conformation of their sugar moieties. The A-form has its sugars in the C3'-endo conformation whereas the B-form has it in the C2'-endo conformation. The A-form is characteristic of RNA while the B-form is characteristic of DNA.
This routine is called automatically by the Plico routine Polymeraze when a polynucleotide is generated.
ToABnt 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 toAB NT Script=script <path to your script directory>/toABnt.spt;plico_to_ab_nt
saved as toABnt.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 toABnt.spt.
# toABnt - Jmol script by Ron Mignery # v1.8 beta 7/11/2014 -add multi-frame support # # Convert a polynucleotide chain from A-form to B-form or vice versa # gToab = FALSE gToabAlt = FALSE gToA = FALSE gBusy = FALSE function to_ab_nt_auto(iChain, toA) { # Load common functions if not already load_common() gChain1 = iChain gToA = toA to_ab_nt(TRUE) } function to_ab_nt(auto) { if (not gBusy) { gBusy = TRUE var f = (_frameID/1000000) var m = (_frameID%1000000) var toab = (gToA ? "A" : "B") var a = (gToA ? 20.8 : 19.3) var s = (gToA ? 4.44 : 4.73) var minres = {(chain=gChain1) and (file=f)and (model=m)}.resno.min var maxres = {(chain=gChain1) and (file=f)and (model=m)}.resno.max var maxP = atom_rcn(maxres, gChain1, "P") var cp = maxP.xyz var w = array() for (var i = maxres-1; i <= minres; i--) { w += who_pairs(i, gChain1) } if (auto == FALSE) { var isForm = (is_form_a( maxres, gChain1) ? "A" : "B") var p = prompt(format("Convert chain %s from %s-form to:", gChain1, isForm), "A-form|B-form", TRUE) if (p == "A-form") { toab = "A" a = 20.8 s = 4.44 } else if (p == "B-form") { toab = "B" a = 19.3 s = 4.73 } else { color {all} @gScheme return # early exit } background ECHO pink refresh print format("Converting to %s", p) } adjust_nts(minres, maxres, gChain1, toab, a, s) select {(file=f)and (model=m)} var v = cp - maxP.xyz translateSelected @v } } # Bound to ALT-LEFT-CLICK by plicoto_ab_nt function to_ab_chain_mb() { color {(file=f)and (model=m)} @gScheme gChain1 = {atomIndex=_atomPicked}.chain color {(chain=gChain1) and (file=f)and (model=m)} @gAltScheme refresh to_ab_nt(FALSE) } # Load common functions if not already function load_common() { if (kCommon < 2) { script $SCRIPT_PATH$plicoCommon.spt if (kCommon < 2) { prompt ("A newer version of plicoCommon.SPT is required") quit } } if (kNTcommon < 3) { script $SCRIPT_PATH$plicoNTcommon.spt if (kNTcommon < 3) { prompt ("A newer version of plicoNTcommon.SPT is required") quit } } } # Top level of to_ab_nt function plico_to_ab_nt() { # Load common functions if not already load_common() gPlico = "TO A-FORM/B-FORM" plico_prelim(FALSE) gEcho = ("________A <==> B_______|ALT-CLICK=mark chain|DOUBLE-CLICK=exit") echo @gEcho gChain = "" unbind bind "ALT-LEFT-CLICK" "_pickAtom"; bind "ALT-LEFT-CLICK" "+:to_ab_chain_mb"; bind "DOUBLE" "plico_exit"; } # End of to_ab_nt.SPT