Scadnano

Latest version: v0.19.4

Safety actively analyzes 666166 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 5 of 15

0.17.5

Several small bug fixes, plus one big new feature:

Introducing DNA `Extension` API
This feature is supported on the web interface dev branch (https://scadnano.org/dev) at the time of this writing, and in the next release will be on the stable server (https://scadnano.org). See https://github.com/UC-Davis-molecular-computing/scadnano/issues/34#issuecomment-1241023201

DNA Extensions can now be represented. This gives a nice way to specify toeholds and other single-stranded extensions common in DNA strand displacement designs, which are single-stranded (unlike most Domains on a Helix) but are at the end of a strand (unlike a Loopout that is flanked by two Domains on a Strand).

They can be created using the `Extension` class. See full API here: https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.Extension

python
import scadnano as sc

domain = sc.Domain(helix=0, forward=True, start=0, end=10)
left_toehold = sc.Extension(num_bases=6)
right_toehold = sc.Extension(num_bases=5)
strand = sc.Strand([left_toehold, domain, right_toehold])


They can also be created with chained method calls (see https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.StrandBuilder.extension_3p and https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.StrandBuilder.extension_5p)

python
import scadnano as sc

design = sc.Design(helices=[sc.Helix(max_offset=10)])
design.draw_strand(0,0).extension_5p(6).move(10).extension_3p(5)


See also documentation for this feature in the web interface: https://github.com/UC-Davis-molecular-computing/scadnano/releases/tag/v0.17.6

Commits
- c8a8970: Update scadnano.py (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- d482066: fixed docstring with string literal `'\n\n'` (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 03f1142: closes 228: option to export cadnano with no whitespace (David Doty) [229](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/229)
- f25a28f: added `with_deletions` and `with_insertions` methods to `StrandBuilder` and used them in unit tests (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 00451a8: added check for deletion/insertion in range in `StrandBuilder.with_deletions` and `StrandBuilder.with_insertions` (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 4e60f9b: Add UT for chained methods for DNA extensions (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 78c716d: Add TestExportCadnanoV2.test_extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- f16b629: Use self.design_6helix for extension chain method tests (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 2cdf023: Add move extension move test (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 28b0ded: Add extension ligate test (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- a0170e9: Add crossover test (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- e8725cc: test_add_full_crossover_on_extension_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 738979b: test_add_half_crossover_on_extension_ok (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 3615afb: test_add_half_crossover_on_extension_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 2feed8a: test_nick_on_extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 1433022: test_from_json_extension_design (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- de44f47: test_to_json_extension_design (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- e06ac96: Add "relative_offset" field (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- d2f1afb: test_strand__with_relative_offset (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- faa0a33: test_strand__with_relative_offset_on_domain_error and test_strand__with_relative_offset_on_empty_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- a1601b7: test_strand__3p_extension_forward_default_relative_offset (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- daad677: test_strand__5p_extension_forward_default_relative_offset (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 4c459ea: test_strand__3p_extension_reverse_default_relative_offset (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 0941030: test_strand__5p_extension_reverse_default_relative_offset (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 8f48617: Implement 3' extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 5574331: Implement 5p extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 8b6c060: Raise StrandError in as_circular if strand contains Extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 04b25df: Add 5p_extension test case for circular strand (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 6a2c101: Start docstring for extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- fdbdf1c: Begin replacing extension -> extension_3p and add extension_5p_length argument to draw_strand (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 3048af8: Redo test_strand__3p_extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 0e4c694: Redo test_strand__5p_extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- b8077c6: delete default relative_offset tests (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 122445c: In to, check for 3' extension; fixed some tests (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- c45b916: Check for extension in cross (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- cd8edaf: Fix test_strand__cross_after_3p_extension_should_raise_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 68466c8: Pass test_strand__extension_3p_after_loopout_should_raise_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- de3175c: Pass test_strand__extension_3p_after_extension_should_raise_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 173fc34: Pass test_strand__update_to_after_3p_extension_should_raise_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 5610cf8: Pass test_strand__extension_3p_on_circular_strand_should_raise_error (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 185d097: Extension name, label, and sequence (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 43e06bf: Remove relative_offset and ExtensionBuilder (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 9b9e401: Fix some json and cadnano tests (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 819d0d8: Implement Extension from_json, and fix bug with default color from json (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 860be06: Implement Extension.to_json_serializable (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 06fe222: Fix nick,ligate,and crossover tests (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 2b485be: Add ligate and half crossover error cases (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 63fbd53: Fix middle domain bug in ligate (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 4a2023a: Handle ligate and crossover error case (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- a27bcc7: Merge branch 'dev' into 2-support-loopouts-on-the-end-of-a-strand (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 75e4740: fixed errors in plate map documentation (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 996e59b: Update tutorial.md (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- bb152cd: Add docstring for Extension (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- d52f6ce: Add docstrings for rest of Extension fields and functions (Benjamin Lee) [230](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/230)
- 25b3c56: fixes 231: Design.add_full_crossover and Design.add_half_crossover should check for existing crossovers (David Doty) [232](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/232)
- 33b027a: added unit tests for add_half_crossover (David Doty) [232](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/232)
- 290a8db: added example of consecutive crossovers to examples/ directory and added Address information to error message when calling `Design.add_full_crossover` (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 0f61dd4: added example of how to assign `StrandBuilder` instance to a variable to use loops to specify a long strand with its methods (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- c24fbb7: Update README.md (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- da0b087: added link to method `Design.draw_strand` in README when discussing `StrandBuilder` (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 8b52060: Set Position3D as frozen (Constantine Evans) [233](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/233)
- 63da326: Update README.md (Dave Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 3d1b025: Update scadnano.py (Dave Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- a158621: fixed some documentation and added constants for `display_angle` and `display_length` for `Extension` (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 73cd06c: added extensions example (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 380321e: updated extensions example (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- f23b5f8: fixed oxDNA export bug that made length-0 normal vectors (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 9c93c1a: added no_git examples subfolder for examples that I don't want on the git repo (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 36e1725: fixed issue where get_normal_vector_to was being calculated incorrectly and loopout normal vectors weren't being normalized (Daniel Hader) [236](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/236)
- 62f626d: bumped version (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- bd63724: bumped version (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- b1ff5b8: bumped version (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- 20f50d5: fixed unit tests (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)
- badd6b4: fixed last unit test (David Doty) [237](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/237)

0.17.4

Updated to Google Analytics 4.

Accidentally bumped the version twice, so there's no v0.17.3.

Commits
- a2f2a5d: bumped version (David Doty) [762](https://github.com/UC-Davis-molecular-computing/scadnano/pull/762)
- 51e7c79: changed default to apply helix changes to all helices instead of only the one that was right-clicked (David Doty) [762](https://github.com/UC-Davis-molecular-computing/scadnano/pull/762)
- 6abb7c8: added Google Analytics 4 property code to index.html (David Doty) [762](https://github.com/UC-Davis-molecular-computing/scadnano/pull/762)
- 0aae041: changed Google Analytics 4 tag (David Doty) [762](https://github.com/UC-Davis-molecular-computing/scadnano/pull/762)
- 1980cd3: bumped version (David Doty) [762](https://github.com/UC-Davis-molecular-computing/scadnano/pull/762)

0.17.3

Release notes


allow other table formats besides Markdown in `Design.plate_maps`

In a jupyter notebook cell, put this code:

python
import scadnano as sc

helices = [sc.Helix(max_offset=100)]
design = sc.Design(helices=helices, strands=[], grid=sc.square)
design.draw_strand(0, 0).move(10).with_name('strand 0').with_idt(plate='plate 1', well='A1')
design.draw_strand(0, 10).move(10).with_name('strand 1').with_idt(plate='plate 1', well='A2')
design.draw_strand(0, 20).move(10).with_name('strand 2').with_idt(plate='plate 1', well='B2')
design.draw_strand(0, 30).move(10).with_name('strand 3').with_idt(plate='plate 1', well='B3')
design.draw_strand(0, 40).move(10).with_name('strand 4').with_idt(plate='plate 1', well='D7')

from IPython.display import display, Markdown
def dm(o):
display(Markdown(o))

plate_map = design.plate_maps()[0]
dm(plate_map.to_table(tablefmt='html', vertical_borders=True))


It should render

<img width=500 src=https://user-images.githubusercontent.com/19274365/160621269-905ef7a0-051f-4593-b421-ddb55bf5c535.png></img>

The returned HTML uses inline styles to ensure there are vertical borders between columns of the table. The vertical borders make it easier to see which column a well is in. This is useful when rendering in a Jupyter notebook, since the inline styles will be preserved when saving the Jupyter notebook using the nbconvert tool: https://nbconvert.readthedocs.io/en/latest/

Any format supported by the `tabular` package is supported as `tablefmt` for the method `PlateMap.to_table()`. See API for more details: https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.PlateMap.to_table

allow `Design.plate_maps` parameter `well_marker` to be function of well position

This code (note that strands do not require a name if using `well_marker`)

python
import scadnano as sc

helices = [sc.Helix(max_offset=100)]
design = sc.Design(helices=helices, strands=[], grid=sc.square)
design.draw_strand(0, 0).move(10).with_idt(plate='plate 1', well='A1')
design.draw_strand(0, 10).move(10).with_idt(plate='plate 1', well='A2')
design.draw_strand(0, 20).move(10).with_idt(plate='plate 1', well='B2')
design.draw_strand(0, 30).move(10).with_idt(plate='plate 1', well='B3')
design.draw_strand(0, 40).move(10).with_idt(plate='plate 1', well='D7')

plate_map = design.plate_maps()[0]
print(plate_map.to_table(well_marker=lambda x:x))


prints



plate "plate 1"
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|:----|:----|:----|:----|:----|:----|:----|:----|:----|:----|:-----|:-----|:-----|
| A | A1 | A2 | | | | | | | | | | |
| B | | B2 | B3 | | | | | | | | | |
| C | | | | | | | | | | | | |
| D | | | | | | | D7 | | | | | |
| E | | | | | | | | | | | | |
| F | | | | | | | | | | | | |
| G | | | | | | | | | | | | |
| H | | | | | | | | | | | | |




Commits
- 1efd9ad: Closes 149; store DNA sequence in domains and loopouts, not in strand (223) (Benjamin Lee) [223](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/223)
- 9e1a287: corrected docstring for `Design.draw_strand` (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 243562d: Update scadnano.py (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 7ed1610: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- f9e10b6: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 45bf3ed: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 48f6b54: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 6610ef3: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- d6aa2ba: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 0addd6d: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 9ab30af: Update tutorial.md (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- b09632f: Update scadnano.py (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 3fd2a86: Update scadnano.py (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- e9ab4bc: Update scadnano.py (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 7d9764b: added documentation about idt_dna_sequence in docstring for `Strand.dna_sequence` property. (David Doty) [225](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/225)
- 1150ea0: closes 224: allow other table formats besides Markdown in `Design.plate_maps` and closes 222: allow `Design.plate_maps` parameter `well_marker` to be function of well position (David Doty) [225](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/225)
- 9ec66bb: added tabulate as dependency to tests (David Doty) [225](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/225)
- 08bbf35: Update scadnano.py (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)
- 2fb3d35: bumped version (David Doty) [226](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/226)

0.17.2

Release notes

Change modification connector length

This mainly affects how modifications are viewed in the web interface.

You can now change the length of the modification connector. The connector is drawn like a hydrocarbon chain with a default of 4 links:

![image](https://user-images.githubusercontent.com/19274365/151944535-37739dbc-7a61-4d59-90b3-7e713bf0a325.png)

The base class `Modification` now has a `connector_length` field: https://scadnano-python-package.readthedocs.io/en/latest/#scadnano.Modification.connector_length. Setting it will modify the displayed connector length in the web interface.


This is especially helpful to display modifications close to each other on a helix without their text overlapping:

![image](https://user-images.githubusercontent.com/19274365/151944658-93bf0187-a583-4ea6-a380-e9cbb734855d.png)




Plate maps

You can now print a plate map of all or some of the strands in the design that have `Strand.idt.plate` and `Strand.idt.well` specified.

For example, the following code:

python
import scadnano as sc

helices = [sc.Helix(max_offset=100)]
design = sc.Design(helices=helices, strands=[], grid=sc.square)
design.draw_strand(0, 0).move(10).with_name('strand 0').with_idt(plate='plate 1', well='A1')
design.draw_strand(0, 10).move(10).with_name('strand 1').with_idt(plate='plate 1', well='A2')
design.draw_strand(0, 20).move(10).with_name('strand 2').with_idt(plate='plate 1', well='B2')
design.draw_strand(0, 30).move(10).with_name('strand 3').with_idt(plate='plate 1', well='B3')
design.draw_strand(0, 40).move(10).with_name('strand 4').with_idt(plate='plate 1', well='D7')

plate_maps = design.plate_maps_markdown(well_marker='X', strands=[design.strands[0], design.strands[3]])
plate_maps = design.plate_maps_markdown()
plate_map = plate_maps['plate 1']
print(plate_map)


prints the following Markdown representation of the plate:


plate 1
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|-----|----------|----------|----------|-----|-----|-----|----------|-----|-----|------|------|------|
| A | strand 0 | strand 1 | | | | | | | | | | |
| B | | strand 2 | strand 3 | | | | | | | | | |
| C | | | | | | | | | | | | |
| D | | | | | | | strand 4 | | | | | |
| E | | | | | | | | | | | | |
| F | | | | | | | | | | | | |
| G | | | | | | | | | | | | |
| H | | | | | | | | | | | | |


One can specify only a subset of strands, and use a different entry than the strand's name:

python
plate_maps = design.plate_maps_markdown(well_marker='X', strands=[design.strands[0], design.strands[3]])


which prints

plate 1
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|------|------|------|
| A | X | | | | | | | | | | | |
| B | | | X | | | | | | | | | |
| C | | | | | | | | | | | | |
| D | | | | | | | | | | | | |
| E | | | | | | | | | | | | |
| F | | | | | | | | | | | | |
| G | | | | | | | | | | | | |
| H | | | | | | | | | | | | |




method `Design.strand` changed to `Design.draw_strand`
The method `Design.strand` is not well-named. It has been changed to `Design.draw_strand`. The method `Design.strand` still exists for now but is deprecated. It prints a warning that it is deprecated and then simply calls `Design.draw_strand`.

Commits
- 5051e87: added some detail about unique IDs to Modification docstring (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- dde8d5c: Update scadnano.py (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- 020631d: fixes 212: change length of modification "connector" (David Doty) [213](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/213)
- ca2522d: added parameter warn_duplicate_strand_names to scadnano and oxdna export (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- 35d0e56: Update scadnano.py (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- 13d11f5: Solving the bug pointed by test_crossover_to_same_helix.json (Tristan Stérin) [214](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/214)
- cce904c: stap_loop -> stapLoop (Tristan Stérin) [215](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/215)
- 6fe6447: Update scadnano.py (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- 2c88d95: fixed bug in JSON serialization of IDT fields and made PlateCoordinate public (though still undocumented) (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- ddd841d: closes 210: generate plate map (David Doty) [216](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/216)
- ea9357a: added strands and well_markers parameters to plate_maps_markdown to enable a subset of strands to be put in the plate map, and to enable the table to contain another marker besides the strand name such as an X (David Doty) [216](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/216)
- 1a8aa53: updated docstrings for plate_maps_markdown (David Doty) [221](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/221)
- b330d3c: Bug is fixed (Tristan Stérin) [217](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/217)
- 6170f98: Bug is fixed (Tristan Stérin) [217](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/217)
- 9d9538d: closes 219: change `Design.strand` to `Design.draw_strand` (David Doty) [220](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/220)
- 11702b2: added back method `Design.strand` (David Doty) [220](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/220)
- 4f8c28c: removed several docstring references to deprecated method `Design.strand` (David Doty) [220](https://github.com/UC-Davis-molecular-computing/scadnano-python-package/pull/220)

0.17.1

Release notes

Modification display text can be arbitrary Unicode characters

This isn't really a new feature; it was always the case. But it's worth pointing out that it is useful since Unicode has such a variety of symbols. For instance, here's unicode characters for a [glowing star](https://unicode-table.com/en/1F31F/) and [medium black circle](https://unicode-table.com/en/26AB/) to represent a fluorophore and quencher:

<img width=300 src="https://user-images.githubusercontent.com/19274365/154812623-9f8b2443-998e-4a63-8616-527f26167705.png"> <img width=300 src="https://user-images.githubusercontent.com/19274365/154812651-c0f4f425-e5a6-4036-adb2-d6e7fded627d.png">

![image](https://user-images.githubusercontent.com/19274365/154812471-7bb39738-c30f-48f5-b5c0-33f5fcbe66ac.png)


Change modification connector length

You can now change the length of the modification connector. The connector is drawn like a hydrocarbon chain with a default of 4 links:

![image](https://user-images.githubusercontent.com/19274365/151944535-37739dbc-7a61-4d59-90b3-7e713bf0a325.png)

You can now edit the length:

<img width=300 src="https://user-images.githubusercontent.com/19274365/151944581-5a8d5988-bd2a-406d-b4d1-8434f40cd887.png">


This is especially helpful to display modifications close to each other on a helix without their text overlapping:

![image](https://user-images.githubusercontent.com/19274365/151944658-93bf0187-a583-4ea6-a380-e9cbb734855d.png)



Autofit added to View menu

The View&rarr;Autofit submenu now has an "Autofit" option, which can center the design. Starting with a design like this:

![image](https://user-images.githubusercontent.com/19274365/154707675-02273ca8-27d9-4bd3-8b2b-b6beffd4bbaf.png)

Clicking "View&rarr;Autofit&rarr;Autofit current design" changes the zoom and translation to fit it just in the window:

![image](https://user-images.githubusercontent.com/19274365/154708088-1d21d5a1-5152-45ab-b00b-97904d2411c2.png)



Disable display of helices in main view

Go to View&rarr;Helices&rarr;Show main view helices:

<img width=500 src="https://user-images.githubusercontent.com/19274365/152549923-f1eb3d43-69c7-432a-972b-cbe388621596.png">

Toggling it will turn off all view elements associated with helices, such as tick marks, helix circles with indices, major tick numbers, etc:

Before:

![image](https://user-images.githubusercontent.com/19274365/152550136-960ebba3-8fee-44d4-b579-08c9f175d226.png)

After:

![image](https://user-images.githubusercontent.com/19274365/152550185-afddfdc7-3f10-4263-af1e-6975af04a036.png)





Reset local settings

The File menu now has an option "Reset local settings". This will delete all settings stored in the browser, including the stored design, and reset scadnano to its original settings:

![image](https://user-images.githubusercontent.com/19274365/154708366-2502d46b-e280-4a83-985f-b1ad6efb7539.png)

**NOTE:** If you need to reset local settings due to some design that is causing a bug, but the bug is preventing scadnano from loading and displaying the menu, here is how you can manually delete the local settings:

In your browser, open Developer Tools. This is Ctrl+Shift+I in Chrome and Firefox. It should also be accessible from your browser's menu, in Chrome:

<img width=500 src="https://user-images.githubusercontent.com/19274365/154977295-4f509ea0-cd61-4343-ac17-f7af2f757be9.png">

In Firefox:

<img width=300 src="https://user-images.githubusercontent.com/19274365/154977550-9ab8c0b9-074c-4f83-ad1a-2328df0b7f74.png">

In Chrome, click on Application&rarr;Local Storage&rarr;`https://scadnano.org`

<img width=400 src="https://user-images.githubusercontent.com/19274365/154977942-e0668f7f-455e-450d-9fdf-92c62af75efa.png">

In Firefox, click on Storage&rarr;Local Storage&rarr;`https://scadnano.org`

<img width=400 src="https://user-images.githubusercontent.com/19274365/154978395-cfc53f6c-b7b1-40ba-ac2e-044b83392415.png">

Delete the key `scadnano:design` to remove the stored design. Delete the key `scadnano:app_ui_state_storables` to reset other local settings.



Commits
- d934bc2: fixes 681: merging strands should keep at least one existing name (Cesar Alonso Guzman Avina) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 46398ac: changed variable names strand_from and strand_to to strand_3p and strand_5p to be consistent with naming convention in ligate reducer (and be more unambiguous about what it means) (David Doty) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- dc6fc13: Update nick_ligate_join_by_crossover_reducers.dart (David Doty) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 3bc9561: renamed more strand variables in ligate and crossover join reducer to match convention, and changed convention of order of strand parameters to `join_two_strands_with_substrands` (David Doty) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 1b6d613: added naming behavior for nicked/deleted crossover/deleted domain as well as added naming behavior for ligate/crossovers (Cesar Alonso Guzman Avina) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 5ac76ef: Fixes 697; fix JSON encoding warning on startup (Benjamin Lee) [704](https://github.com/UC-Davis-molecular-computing/scadnano/pull/704)
- d4f5244: closes 709; in DNA sequence assignment, disable "warn if assigning different sequence to bound strand" checkbox when "assign complement to bound strands" is unchecked (David Doty) [710](https://github.com/UC-Davis-molecular-computing/scadnano/pull/710)
- dd318c8: closes 711: remember previously chosen M13 rotation in Assign DNA sequence dialog (David Doty) [713](https://github.com/UC-Davis-molecular-computing/scadnano/pull/713)
- 5f44b9c: Added new unit test file for strand naming behavior when ligating and nicking (Cesar Alonso Guzman Avina) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 1b2e320: Added autofit submenu, with the new 'autofit current design' option and fixed autofit behavior (Cesar Alonso Guzman Avina) [742](https://github.com/UC-Davis-molecular-computing/scadnano/pull/742)
- 929be7f: closes 715: assign DNA sequence dialog should state p7249 instead of p7429 (David Doty)
- 3460729: Fixes 650; move svg position of helices out of design and into app state (703) (Benjamin Lee) [703](https://github.com/UC-Davis-molecular-computing/scadnano/pull/703)
- 3651532: changed tooltip for View --> Invert y-axis (David Doty)
- c5077c1: Fixes 668; fix crash error when deselecting strand while strands from multiple helix groups are selected (720) (Benjamin Lee) [720](https://github.com/UC-Davis-molecular-computing/scadnano/pull/720)
- 155dfa2: changed "Set helix coordinates based on crossovers" tooltip to explain why it is disabled if it is. (David Doty)
- 7587bc7: basic ligate unit tests with scaffolds (Cesar Alonso Guzman Avina) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 16a36ee: closes 719: add "reset local settings" button (rishabhmudradi) [723](https://github.com/UC-Davis-molecular-computing/scadnano/pull/723)
- 1104584: add tests for checking name property after ligating and adding crossovers to same type strands (sarahayu) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- feffe7b: crossover and ligate unit tests for nullable strands (rishabhmudradi) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- cf86bda: refactored const containing message displayed when there's no design (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 81b49fd: Update design_main_domain_moving.dart (David Doty) [726](https://github.com/UC-Davis-molecular-computing/scadnano/pull/726)
- f3477d8: turned off Redux Devtools (David Doty) [726](https://github.com/UC-Davis-molecular-computing/scadnano/pull/726)
- 427dfd7: added comments clarifying difference between in_bounds and is_allowable for moving strands and domains (David Doty) [726](https://github.com/UC-Davis-molecular-computing/scadnano/pull/726)
- 2f2c2d0: fixes 722: moving domain should be disallowed if overlapping another domain (David Doty) [726](https://github.com/UC-Davis-molecular-computing/scadnano/pull/726)
- d2d2fbe: fixes 717: Disable drawing of strands when connecting a crossover (David Doty) [727](https://github.com/UC-Davis-molecular-computing/scadnano/pull/727)
- 17991c1: fixes 725: moved domains should be reselected after move (David Doty) [728](https://github.com/UC-Davis-molecular-computing/scadnano/pull/728)
- d6f4c39: refactored PotentialCrossover to use Address field (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 105fb9d: closes 716: drag crossover/loopout from end of one domain to another (David Doty) [729](https://github.com/UC-Davis-molecular-computing/scadnano/pull/729)
- 17cb96a: fixing generic type error in Strand.loopouts getter (David Doty) [729](https://github.com/UC-Davis-molecular-computing/scadnano/pull/729)
- 3a54fee: fixed generic type error in Strand.crossovers getter (David Doty) [729](https://github.com/UC-Davis-molecular-computing/scadnano/pull/729)
- 93fa987: fixed bug in displaying moving domains, where they were only be displayed on the original helix even if the cursor moved to a new helix (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- a5a54a7: fixed bug with displaying strand and domain names where the React components were not being passed the helix svg positions causing a crash (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 6be2d47: closes 733: right click on strand name or domain name brings up strand context menu (David Doty) [734](https://github.com/UC-Davis-molecular-computing/scadnano/pull/734)
- 2ae16a4: fixes 732: fix bug where copy/paste strands breaks when helix counts/indices are not sufficient in destination design (David Doty) [735](https://github.com/UC-Davis-molecular-computing/scadnano/pull/735)
- 967dba1: fixes 732: fix bug where copy/paste strands breaks when helix counts/indices are not sufficient in destination design (last commit only fixed some special cases)) (David Doty) [735](https://github.com/UC-Davis-molecular-computing/scadnano/pull/735)
- 902bea2: Fixes 706; Update dependencies and Dart SDK in workflows (730) (Benjamin Lee) [730](https://github.com/UC-Davis-molecular-computing/scadnano/pull/730)
- e0ec0af: added option to set max offset of every helices based on largest-offset domain on any helix, and fixed crash bug in setting this for helices with no domains (David Doty) [736](https://github.com/UC-Davis-molecular-computing/scadnano/pull/736)
- dbac38a: Closes 686; Don't run unit tests on draft/incomplete PRs (737) (Benjamin Lee) [737](https://github.com/UC-Davis-molecular-computing/scadnano/pull/737)
- c556814: Create pull_request_template.md (738) (Benjamin Lee) [738](https://github.com/UC-Davis-molecular-computing/scadnano/pull/738)
- ac26f5c: fixed case-sensitivity bug in checking file extension (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 2f8fc6d: initial middleware implementation (rishabhmudradi) [723](https://github.com/UC-Davis-molecular-computing/scadnano/pull/723)
- 0be2ca1: removing '.g' import (rishabhmudradi) [723](https://github.com/UC-Davis-molecular-computing/scadnano/pull/723)
- 02936f2: fixes 707: autofit in View menu (rishabhmudradi) [742](https://github.com/UC-Davis-molecular-computing/scadnano/pull/742)
- 83d6c74: Update menu.dart (David Doty) [742](https://github.com/UC-Davis-molecular-computing/scadnano/pull/742)
- e496476: Merge branch 'dev' into 681-merging-strands-should-keep-at-least-one-existing-name (David Doty) [741](https://github.com/UC-Davis-molecular-computing/scadnano/pull/741)
- 8feabf4: fixes 743: change length of modification "connector" (David Doty) [744](https://github.com/UC-Davis-molecular-computing/scadnano/pull/744)
- 438ef0a: fix bug where 'stap_loop' key was used instead of 'stapLoop' in cadnano export (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 696601c: Update load_dna_file_reducer.dart (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 4172cd2: fixes bug in cadnano import when crossover connects two ends on same helix (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 6aa0db1: closes 746: disable display of helices in main view (David Doty) [747](https://github.com/UC-Davis-molecular-computing/scadnano/pull/747)
- 1e2d52a: re-arranged show/hide options dealing with helices into their own submenu of the View menu (David Doty) [747](https://github.com/UC-Davis-molecular-computing/scadnano/pull/747)
- 9b82855: fixed crash bug in displaying only selected helices (David Doty) [747](https://github.com/UC-Davis-molecular-computing/scadnano/pull/747)
- 67414ad: Merge branch 'dev' into add-reset-local-settings-button-719 (Rishabh Mudradi) [723](https://github.com/UC-Davis-molecular-computing/scadnano/pull/723)
- 47d11f9: connector length in "add modification" is updated to be most recently used length instead of 4 (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)
- 13a35be: Merge branch 'dev' into 707-autofit-in-View-menu (Rishabh Mudradi) [742](https://github.com/UC-Davis-molecular-computing/scadnano/pull/742)
- 527d47c: changed comments around ResetLocalStorage action and added confirmation prompt for the user if they click "Reset local settings" (David Doty) [723](https://github.com/UC-Davis-molecular-computing/scadnano/pull/723)
- 50b95c7: bumped version (David Doty) [749](https://github.com/UC-Davis-molecular-computing/scadnano/pull/749)

0.17.0

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&rarr;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)

Page 5 of 15

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.