Release notes
automatically set Helix rolls based on crossover locations ("relax" the rolls)
In this design, the crossovers are well placed relative to each other, but the helix rolls need to be rotated. As the slice bar shows, with the default roll of 0, the crossovers do not point at the helices they connect to:
![image](https://github.com/UC-Davis-molecular-computing/scadnano/assets/19274365/325b2b42-d7bd-4253-b949-37a7bfac23e9)
![image](https://github.com/UC-Davis-molecular-computing/scadnano/assets/19274365/45ae7174-0c4f-4055-95dc-e5ded60c84b2)
By selecting "Edit-->Helix rolls-->Set helix rolls to unstrain crossovers":
![image](https://github.com/UC-Davis-molecular-computing/scadnano/assets/19274365/2410685d-6a5f-4ac1-b41a-df6b1aad5cda)
The helix rolls are set to minimize "strain" in the crossovers:
![image](https://github.com/UC-Davis-molecular-computing/scadnano/assets/19274365/59b9cdf8-5e68-4ca0-bd8a-0c007011a745)
![image](https://github.com/UC-Davis-molecular-computing/scadnano/assets/19274365/9d1c46de-0819-4d55-913a-fb3528ebde54)
Formally, the strain is defined as the square of the angular distance between the "ideal" angle for the crossover (i.e., the relative angle of the other helix to which it is connecting) and the crossover's current angle. The roll is set so as to minimize this total strain across all crossovers in each helix.
The reason to minimize the sum of the squared angular distances is that, if we model each crossover as an angular spring exerting a rotational force on the helix proportional to its displacement from the "ideal" angle (pointing directly at the other helix), this minimizes the total energy stored in the springs.
Commits
- beb3335: Fixes 20, add shadow filter for domains (Benjamin Lee) [480](https://github.com/UC-Davis-molecular-computing/scadnano/pull/480)
- 8d0454d: Remove stopgap styling of domains on hover (Benjamin Lee) [480](https://github.com/UC-Davis-molecular-computing/scadnano/pull/480)
- e2d0d70: closes 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- fbe8e08: closes and fixes 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 7435548: closes and fixes a typo in 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 406b8bf: closes, updates, and fixes 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 95e5a84: closes, updates, and fixes 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 62160c5: closes additional changes in 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- f1c584f: closes and formats in 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 5e0d8eb: closes again1 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 7d28900: closes again2 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 42d78d8: closes (finally) 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 7c23d9c: closes (again) 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 2dcee78: closes bug 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- f485b0d: closes the bug 849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) [866](https://github.com/UC-Davis-molecular-computing/scadnano/pull/866)
- 77a4c54: bumped version (David Doty) [901](https://github.com/UC-Davis-molecular-computing/scadnano/pull/901)
- 87c3f10: added Helix.roll and backbond angles at slice bar position to side view Helix tooltip text (David Doty) [901](https://github.com/UC-Davis-molecular-computing/scadnano/pull/901)
- b4abdae: fixed setting helix roll saved response to be current value of roll (David Doty) [901](https://github.com/UC-Davis-molecular-computing/scadnano/pull/901)
- 4cdb3c4: changed modification Select Mode icon to have capital M instead of b (David Doty) [901](https://github.com/UC-Davis-molecular-computing/scadnano/pull/901)
- 68d7f50: implemented logic for relaxing helix rolls based on crossover locations (not in UI yet) (David Doty) [900](https://github.com/UC-Davis-molecular-computing/scadnano/pull/900)
- bb6db46: Update helix_relax_rolls_test.dart (David Doty) [900](https://github.com/UC-Davis-molecular-computing/scadnano/pull/900)
- 33a6702: more unit tests (David Doty) [900](https://github.com/UC-Davis-molecular-computing/scadnano/pull/900)
- e55eda9: closes 843: automatically set Helix rolls based on crossover locations ("relax" the rolls) (David Doty) [900](https://github.com/UC-Davis-molecular-computing/scadnano/pull/900)
- 6c15bb4: fixed bug with relaxing helix roll on helix with no crossovers and added unit test for that case (David Doty) [901](https://github.com/UC-Davis-molecular-computing/scadnano/pull/901)