User:Remig/plico/toABnt
ToABnt allows the user to convert a nucleotide or a polynucleotide chain or chain pair from A-form to B-form and vice versa.
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 SHIFT-CLICK on any atom, you are prompted to convert just the selected nucleotide.
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.9 beta 8/18/2014 -add single NT mode # # Convert a nucleotide or 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_single_nt(res, iChain) { f = {atomIndex=_atomPicked}.file m = {atomIndex=_atomPicked}.model var isForm = (is_form_a( res, iChain) ? "A" : "B") var p = prompt(format("Convert residue %d from %s-form to:", res, isForm), "A-form|B-form|Cancel", true) var toab = false if (p == "A-form") { toab = true } else if (p != "B-form") { color {all} @gScheme return # early exit } # Call worker function to_ab_nt_res(res, res+1, iChain, toab) } function to_ab_nt(auto) { var f = (_frameID/1000000) var m = (_frameID%1000000) if (not gBusy) { gBusy = true var toab = (gToA ? "A" : "B") var a = (gToA ? 24.0 : 19.3) var s = (gToA ? 4.6 : 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 a0 = within(kDtolerance, {0 0 0}) if (auto == false) { f = {atomIndex=_atomPicked}.file m = {atomIndex=_atomPicked}.model 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|Cancel", true) if (p == "A-form") { toab = "A" a = 24.0 s = 4.6 } else if (p == "B-form") { toab = "B" a = 19.3 s = 4.73 } else { color {all} @gScheme return # early exit } } set echo TOP LEFT background ECHO pink var ps = "Converting to " + toab + " form..." echo @ps refresh # Call worker function adjust_nts(minres, maxres, gChain1, toab, a, s) select {(file=f) and (model=m)} if (a0.size > 0) { translateSelected @{-a0.xyz} } background ECHO yellow echo @gEcho gBusy = false } } # 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) } # Bound to SHIFT-LEFT-CLICK by plicoto_ab_nt function to_ab_res_mb() { color {(file=f)and (model=m)} @gScheme iChain = {atomIndex=_atomPicked}.chain res = {atomIndex=_atomPicked}.resno color {(chain=iChain) and (file=f)and (model=m) and (resno=res)} @gAltScheme refresh to_ab_single_nt(res, iChain) } # Load common functions if not already function load_common() { if (kCommon < 3) { script $SCRIPT_PATH$plicoCommon.spt if (kCommon < 3) { prompt ("A newer version of plicoCommon.SPT is required") quit } } if (kNTcommon < 4) { script $SCRIPT_PATH$plicoNTcommon.spt if (kNTcommon < 4) { 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=convert chain" + "|SHIFT-CLICK=convert NT|DOUBLE-CLICK=exit") echo @gEcho gChain = "" unbind bind "ALT-LEFT-CLICK" "_pickAtom"; bind "ALT-LEFT-CLICK" "+:to_ab_chain_mb"; bind "SHIFT-LEFT-CLICK" "_pickAtom"; bind "SHIFT-LEFT-CLICK" "+:to_ab_res_mb"; bind "DOUBLE" "plico_exit"; } # End of to_ab_nt.SPT