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)