Icon representing a recipe

Recipe: Fibonacci Wiggle

created by PieThrower

Profile


Name
Fibonacci Wiggle
ID
104473
Shared with
Public
Parent
Fibonacci Wiggle
Children
Created on
February 14, 2021 at 23:42 PM UTC
Updated on
February 14, 2021 at 23:42 PM UTC
Description

Local wiggle sections of either increasing or decreasing size.
Originally by Crashguard303. Translated to LuaV2 by joshmiller using LociOiling's MacroScanner.

Best for


Code


-------------------------------------------------------------------------------- -- Fibonacci Wiggle -- -- Local wiggles segemnts of either increasing or decreasing size using -- fibonacci numbers -- -- Originally by Crashguard303. Translated to LuaV2 by joshmiller using -- LociOiling's MacroScanner. Modification and simplification by PieThrower. -------------------------------------------------------------------------------- isInc = false shakeIters = 1 wiggleIters = 25 protLen = structure.GetCount() fiboNums = {1, 2, 3, 5, 8, 13, 21, 34, 55, 89} initialScore = 0 --[[ TODO - build fibonacci number table relative to protien size - figure out what freezing was supposed to do ]]-- function getParameters() dlg = dialog.CreateDialog("Fibonacci Wiggle") dlg.isInc = dialog.AddCheckbox("Small to Large", false) dlg.wiggleIters = dialog.AddSlider("Wiggle Iterations", 25, 1, 50, 0) dlg.shakeIters = dialog.AddSlider("Shake Iterations", 3, 0, 20, 0) dlg.ok = dialog.AddButton("OK", 1) dlg.cancel = dialog.AddButton("Cancel", 0) if dialog.Show(dlg) > 0 then isInc = dlg.isInc.value wiggleIters = dlg.wiggleIters.value shakeIters = dlg.shakeIters.value return true else print("Program Cancelled") end return false end function wiggleLength (len) print("running with length", len) --[[ -- Honestly I'm not really sure what this freezing is supposed to accomplish if len / 2 > 2 then print ("freezing") for seg = math.floor (len / 2), protLen, len do selection.DeselectAll () selection.SelectRange ( seg, math.min (seg + len / 2 - 1, protLen) ) freeze.FreezeSelected ( true, true ) end end ]]-- for seg = 1, protLen, len do selection.DeselectAll () selection.SelectRange ( seg, math.min (seg + len - 1, protLen) ) structure.LocalWiggleSelected ( wiggleIters ) end --freeze.UnfreezeAll () structure.ShakeSidechainsAll ( shakeIters ) end function cleanup () print("Script complete. Score changed by", current.GetScore() - initialScore) print("Ending score:", current.GetScore()) end function main () if not getParameters() then return false end initialScore = current.GetScore() print("Starting score:", initialScore) if isInc == true then for i = 1, #fiboNums do wiggleLength(fiboNums[i]) end else for i = #fiboNums, 1, - 1 do wiggleLength(fiboNums[i]) end end end xpcall(main, cleanup)

Comments