This is a fairly hefty release with many features and bug fixes, including one breaking change related to oxDNA export.
Fix Pitch Angle on oxDNA Export
**Note:** This is a breaking change since it changes how oxDNA export is defined. If you were using oxDNA export before, you will have to change some helix angles (pitch and yaw) to create the same oxDNA output that was previously generated.
Previously, scadnano interpreted the pitch angle as a clockwise rotation in the Y-Z plane, following SVG convention. For example, the following design has a helix group (containing helix 1) with pitch=45 (clockwise, away from the single strand on helix 0):
![image](https://user-images.githubusercontent.com/19274365/140661971-de0ef47d-e112-464c-b49c-34003d7b43c9.png)
Previously, exporting to oxDNA rotates the helix in the opposite direction (counter-clockwise, towards the single strand on helix 0). Now, exporting to oxDNA rotates the helix in the same direction as in scadnano:
| Old | New |
| ------------- | ------------- |
| <img src="https://user-images.githubusercontent.com/19274365/140661970-f1d2367a-7adb-4bd1-aa71-9cc290226dac.png" alt="drawing" width="400"/> | <img src="https://user-images.githubusercontent.com/31255679/145515095-ea0398b3-4e2a-41a8-8899-24b2c7ed5bee.png" alt="drawing" width="400"/> |
Move Selected Helices to Group
Users can now move selected helices to another helix group by right clicking on selected helices and clicking "set group."
![move_helices_to_other_group](https://user-images.githubusercontent.com/31255679/144955152-adf27475-b75d-4d4a-a272-95f196d4dd1a.gif)
Edit Strand IDT Fields
[IDT fields](https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.IDTFields) of a strand enable one to specify options for ordering strands from the DNA synthesis company [IDT](https://www.idtdna.com/), which are used when doing Export→DNA sequences and selecting one of the IDT formats.
Previously, IDT fields could only be edited in the [Python scripting library](https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.Strand.idt) or manually in the `.sc` file. Now, scadnano provides an interface to enable users to edit IDT fields. Right click on any strand and click "edit idt fields" to open the edit IDT menu.
![image](https://user-images.githubusercontent.com/31255679/144956561-d7ede69c-924b-4971-9805-9ad8c90cefcb.png)
Display Axis Arrows in Main View and Side View
The main view and side view now displays the axis arrows, which makes it easier to keep track of the axis especially when "invert y axis" is selected.
![image](https://user-images.githubusercontent.com/31255679/144961391-cfac4331-c9f6-415a-a6cc-18e875c34915.png)
The colors of the axis arrows match that of [oxView](https://sulcgroup.github.io/oxdna-viewer/), which helps when viewing a structure in both scadnano and oxView. Unfortunately the default orientation in oxView is reflected both horizontally and vertically compared to the main view of scadnano, but by rotating the view in oxView until the arrows match that displayed in the scadnano main view, the orientations can be made the same.
The axis arrow display can be toggled through the View menu.
New Edit Mode/Selection Mode UI
The Edit Mode and Selection Mode UI now features icons instead of text, which takes up less horizontal room on the screen.
| Old | New |
| ------------- | ------------- |
| ![image](https://user-images.githubusercontent.com/31255679/144961775-66796117-a3f4-43a6-b29b-c2d54617e5b6.png) | ![image](https://user-images.githubusercontent.com/31255679/144961861-a596416f-1005-4890-b779-5ad98b2fb626.png) |
The previous text is still viewable by hovering over the icon.
In addition, to create more screen space for viewing a design, these menus can now be hidden by clicking on the toggle (bottom left of the screenshot).
Enable oxDNA Export for Only Selected Strands
Users now have the option to export only selected strands in oxDNA export. This is useful for exporting just a piece of a larger design, for instance a single design that contains many structures.
Commits
- 9b3f832: added reversed domain names (Cesar Alonso Guzman Avina) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 30bea3e: creating test file (rishabhmudradi) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 73473d3: updating test file (rishabhmudradi) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 42511e5: Update domain_label_move_test.dart (Cesar Alonso Guzman Avina) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 78a557e: Added AssertionError when view_order_of_helix is null (Cesar Alonso Guzman Avina) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 17713bc: moved assign/remove dna tests into assign_dna_unit_test, updated tests to use chain design methods, and added a test for assigning dna complement from bound strands (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- e9fb271: Added basic insertion unit test (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 8d98555: added unit tests for insertions and deletions (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 4a26915: ported tests from python library to dart for assigning dna (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 1142361: closes 467: domain labels move when switching orientation of strand (Cesar Alonso Guzman Avina) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- 8f332b0: porting more tests from python into dart (rishabhmudradi) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 556abdd: ported more AssignDNA tests from python (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 84b80d0: finish adding remaining test cases from scadnano python (sarahayu) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 1f20980: fix mistakes on last commit (sarahayu) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 5dc42c3: fix typo on ascii art (sarahayu) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- f8f184c: bumped version (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- e3eb58d: cleaned up menu (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- b708514: closes 608 (Cesar Alonso Guzman Avina) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- e9c4d5e: Fixing ASCII art to match python format (rishabhmudradi) [635](https://github.com/UC-Davis-molecular-computing/scadnano/pull/635)
- 8ea5202: added requested changes (Cesar Alonso Guzman Avina) [631](https://github.com/UC-Davis-molecular-computing/scadnano/pull/631)
- de5fa9f: fixed bug, and revised context menu item (Cesar Alonso Guzman Avina) [636](https://github.com/UC-Davis-molecular-computing/scadnano/pull/636)
- dd63e08: added unit tests for deleting helices (Cesar Alonso Guzman Avina) [636](https://github.com/UC-Davis-molecular-computing/scadnano/pull/636)
- e69dc4a: edit idt fields on a single strand (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 16294ec: fix shift-clicking not working at times (sarahayu) [644](https://github.com/UC-Davis-molecular-computing/scadnano/pull/644)
- 0c14d40: closes 420 (sarahayu) [641](https://github.com/UC-Davis-molecular-computing/scadnano/pull/641)
- 5b638d1: disable hotkeys when adjusting or adding helix groups (sarahayu) [641](https://github.com/UC-Davis-molecular-computing/scadnano/pull/641)
- c85b7dc: Revert "628 deleting helices when using multiple groups of helixes causes the saved .sc file to be an illegal design when opened" (Cesar Alonso Guzman Avina) [637](https://github.com/UC-Davis-molecular-computing/scadnano/pull/637)
- 9749337: closes 628 (Cesar Alonso Guzman Avina) [639](https://github.com/UC-Davis-molecular-computing/scadnano/pull/639)
- 2d8bab5: closes 628: deleting helices when using multiple groups of helices (Cesar Alonso Guzman Avina) [639](https://github.com/UC-Davis-molecular-computing/scadnano/pull/639)
- 97ea21b: closes 561: add ability to edit IDT fields of a strand (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 458b407: Revert "disable hotkeys when adjusting or adding helix groups" (sarahayu) [641](https://github.com/UC-Davis-molecular-computing/scadnano/pull/641)
- e75b8a2: fixes 640 (sarahayu) [642](https://github.com/UC-Davis-molecular-computing/scadnano/pull/642)
- 2af9487: added print warning if side helices are not in view; a good proxy for "the design didn't load but the view is trying to draw itself" (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 4b80176: fixed bug where it was assumed Modificaiton.idt_text is non-null, but it is nullable. Also marked it nullable in each concrete subclass. (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 696208c: Merge branch 'dev' into 628-Deleting-Helices-when-using-multiple-groups-of-helixes-causes-the-saved-.sc-file-to-be-an-Illegal-Design-when-opened (Cesar Alonso Guzman Avina) [639](https://github.com/UC-Davis-molecular-computing/scadnano/pull/639)
- 1175094: Readded previous commits that were removed (Cesar Alonso Guzman Avina) [639](https://github.com/UC-Davis-molecular-computing/scadnano/pull/639)
- 482a0d0: Update modification.dart (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 1cc202e: Adding 4 submenue items to edit IDT fields (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 72f9411: removing the original edit_idt_fields feature (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- ca01aa7: updating code for default fields (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 7864065: fixing bug to add plate/well (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 60c7ddf: Merge branch 'dev' into 561-add-ability-to-edit-IDT-fields-of-a-strand- (Rishabh Mudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- 0bdee9b: add svg elements and hook components (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- d30aace: Added x,y,z axis arrows for side and main view (Cesar Alonso Guzman Avina) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 57e4078: fix tooltip and change svg pointer events (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 05b2256: fixes 163 (sarahayu) [644](https://github.com/UC-Davis-molecular-computing/scadnano/pull/644)
- 26eb09e: added css for side eye and main view eye (Cesar Alonso Guzman Avina) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- e48f268: updatedt README to state that Edge is supported now that issue 127 seems to be solved (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 74448a5: adding disable option for submenu (rishabhmudradi) [643](https://github.com/UC-Davis-molecular-computing/scadnano/pull/643)
- a1057fc: remove eye feature and change drawing order of axes (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 0b6d706: move arrows closer to corner (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 97bec94: added Show/Hide Axis Arrows as a View option (Cesar Alonso Guzman Avina) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 7f2e872: closes 403 : add axis arrows to main view and side view (Cesar Alonso Guzman Avina) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- b46505f: Merge branch 'dev' into 403-add-axis-arrows-to-main-view-and-side-view (Cesar Alonso Guzman Avina) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 2490794: added toggle edit mode feature (Cesar Alonso Guzman Avina) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 9b241ed: add image file getters (sarahayu) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 11a7b47: added images to buttons in edit mode menu (Cesar Alonso Guzman Avina) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- e3a30b8: add cleanup css and all_ends image link feature (sarahayu) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- e0c001b: added select mode images (Cesar Alonso Guzman Avina) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- b9f4710: rename axis arrow action (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- fa03809: fixes 645: crash on edit modification (rishabhmudradi) [649](https://github.com/UC-Davis-molecular-computing/scadnano/pull/649)
- 175c473: add axis labels (sarahayu) [646](https://github.com/UC-Davis-molecular-computing/scadnano/pull/646)
- 7493548: adding new images (rishabhmudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 4560662: closes 224: allow edit mode/selection mode to be hidable, and replace words with small icons (rishabhmudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 58ffee0: closes 437: add tooltips to edit and select mode buttons (rishabhmudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 9f144a4: Merge branch 'dev' into 224-allow-edit-mode/selection-mode-to-be-hidable-and-replace-words-with-small-icons (Rishabh Mudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 265719c: added citation request to landing page (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- cfb5405: added citation request to landing page (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- e54b139: fixed bibtex link (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- b6b1efc: Update error_message.dart (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 2b8fec8: final icon modfications (rishabhmudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- 38ca294: improved edit mode toggle button (rishabhmudradi) [651](https://github.com/UC-Davis-molecular-computing/scadnano/pull/651)
- d1c7de8: closes 654: domain name moves from 3' to 5' end when moving strand (rishabhmudradi) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- f3dcc69: Update define_root_dir.sh (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- f82ddc7: Fixes 655; side menu not working in scadnano.org/dev (Benjamin Lee) [658](https://github.com/UC-Davis-molecular-computing/scadnano/pull/658)
- f628ee4: fixing bug (rishabhmudradi) [649](https://github.com/UC-Davis-molecular-computing/scadnano/pull/649)
- 293bde9: switched enum type to BuiltValue (rishabhmudradi) [649](https://github.com/UC-Davis-molecular-computing/scadnano/pull/649)
- 0983edc: fixes 664: allow oxDNA export when multiple helix groups are present (David Doty) [666](https://github.com/UC-Davis-molecular-computing/scadnano/pull/666)
- abe9913: closes 665: export oxDNA for only selected strands (David Doty) [669](https://github.com/UC-Davis-molecular-computing/scadnano/pull/669)
- 2dfb06e: Update oxdna_export.dart (David Doty) [669](https://github.com/UC-Davis-molecular-computing/scadnano/pull/669)
- eed9d94: added more explicit description of yaw, pitch, roll angles and linked to API documentation for details (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- e9bcc7a: added check for helices_view_order_inverse being well-defined (currently throws an exception, but more informative than the error it was causing previously) (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- d49cc9e: changed error message on trying to move DNA ends in different helix groups (previously said strands instead of DNA ends) (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 452576a: creating modification_type (rishabhmudradi) [649](https://github.com/UC-Davis-molecular-computing/scadnano/pull/649)
- 3894fab: added roll_of_helix method to Design (to add group's roll to Helix.roll) (David Doty) [676](https://github.com/UC-Davis-molecular-computing/scadnano/pull/676)
- 1d88414: Merge branch 'dev' into crash-on-edit-modification-645 (David Doty) [649](https://github.com/UC-Davis-molecular-computing/scadnano/pull/649)
- 3e26e1f: added comments and changed mirrored_domain name (Cesar Alonso Guzman Avina) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- 3936d7b: closes 671 (Cesar Alonso Guzman Avina) [672](https://github.com/UC-Davis-molecular-computing/scadnano/pull/672)
- 91bed90: closes 670 (Cesar Alonso Guzman Avina) [672](https://github.com/UC-Davis-molecular-computing/scadnano/pull/672)
- 8db70fb: some memoized getters in Strand were returning mutable lists; changed to BuiltList for safety (David Doty) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- e3a1bd7: modified comments in move_strand function in strands_reducer (David Doty) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- 0ccdc48: added assert statement about helices_view_order to help identify bug in 668 (David Doty) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- 1b43ce6: Merge branch 'dev' into 654-domain-name-moves-from-3'-to-5'-end-when-moving-strand (David Doty) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- eb8ab25: fixes 670: edit mode menu hidden on zoom in (sarahayu) [672](https://github.com/UC-Davis-molecular-computing/scadnano/pull/672)
- 2f98ac0: fixes 671: fix crash when loading for first time (sarahayu) [672](https://github.com/UC-Davis-molecular-computing/scadnano/pull/672)
- 32fac9a: undid the effect of 654, so that domain names now stay associated to the original domain when strands move to reverse orientation (David Doty) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- 696ce81: changed type from Iterable<String> to BuiltList<String> (Cesar Alonso Guzman Avina) [675](https://github.com/UC-Davis-molecular-computing/scadnano/pull/675)
- 47c54fd: fixes 674: remove warning that appears in console on local host when adding modification (sarahayu) [675](https://github.com/UC-Davis-molecular-computing/scadnano/pull/675)
- 1391a5f: add comment with link referencing fix (sarahayu) [675](https://github.com/UC-Davis-molecular-computing/scadnano/pull/675)
- b34de1a: fixes 667: make scadnano pitch angle agree with oxDNA (David Doty) [676](https://github.com/UC-Davis-molecular-computing/scadnano/pull/676)
- 9ee4768: bumped version to 0.17.0 (breaking change in oxDNA export since rotation definitions were changed) (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- 3b35ac8: closes 679: move selected helices to group (David Doty) [687](https://github.com/UC-Davis-molecular-computing/scadnano/pull/687)
- 3669de3: added unit tests and fixed bug with one group (rishabhmudradi) [687](https://github.com/UC-Davis-molecular-computing/scadnano/pull/687)
- 34bd3c0: added more descriptive error messages (rishabhmudradi) [680](https://github.com/UC-Davis-molecular-computing/scadnano/pull/680)
- d2aaf2b: fixes 678: make more useful error message when helices view order input is invalid (sarahayu) [680](https://github.com/UC-Davis-molecular-computing/scadnano/pull/680)
- 4b58946: added more comments detailing how to handle moving helices from one group to another (David Doty) [687](https://github.com/UC-Davis-molecular-computing/scadnano/pull/687)
- 240c1ad: Implement cadnano import export in dart (653) (Benjamin Lee) [653](https://github.com/UC-Davis-molecular-computing/scadnano/pull/653)
- d884e37: update test cases for new domain name move behaviour (sarahayu) [656](https://github.com/UC-Davis-molecular-computing/scadnano/pull/656)
- 69b4d4f: fixes 684 (sarahayu) [688](https://github.com/UC-Davis-molecular-computing/scadnano/pull/688)
- dbb2f4b: Fixes 677; adjusting helices view order should update view (685) (Benjamin Lee) [685](https://github.com/UC-Davis-molecular-computing/scadnano/pull/685)
- 765e9b3: add requested changes (sarahayu) [688](https://github.com/UC-Davis-molecular-computing/scadnano/pull/688)
- c0af5e3: Add doc comments for reassign_svg_positions and helices_assign_svg (Benjamin Lee) [689](https://github.com/UC-Davis-molecular-computing/scadnano/pull/689)
- fb21b62: Update README.md (David Doty) [682](https://github.com/UC-Davis-molecular-computing/scadnano/pull/682)
- da0ff7e: closes 690: highlight helices in main view if selected (sarahayu) [695](https://github.com/UC-Davis-molecular-computing/scadnano/pull/695)
- 71926dc: closes 691: allow helices to be selected from main view (sarahayu) [695](https://github.com/UC-Davis-molecular-computing/scadnano/pull/695)
- 2960cc3: remove commented out lines (sarahayu) [695](https://github.com/UC-Davis-molecular-computing/scadnano/pull/695)
- dc1280a: gray out 'set group' instead of disabling if no other groups are available (sarahayu) [695](https://github.com/UC-Davis-molecular-computing/scadnano/pull/695)
- 5ad5d74: possible fix for move group assertion fail (sarahayu) [698](https://github.com/UC-Davis-molecular-computing/scadnano/pull/698)
- 4060489: fixes 696: Fix Assertion Failed Error When Attempting to Move Group (sarahayu) [698](https://github.com/UC-Davis-molecular-computing/scadnano/pull/698)
- 25b9657: Fixes 699; Fix release note workflow (Benjamin Lee) [700](https://github.com/UC-Davis-molecular-computing/scadnano/pull/700)