Skip to content

Releases: UC-Davis-molecular-computing/scadnano

v0.19.2

28 Mar 21:49
c79287a
Compare
Choose a tag to compare

Release notes

Several bug fixes and a few new features:

Export to oxView format

The scadnano web interface can now export to the oxView format, which (like oxDNA files) can be read the tool oxView.

It has been possible for a while to export to the oxDNA format, but this is nicer just for visualizing scadnano structures in oxView, because

  1. The oxDNA format has two files, whereas oxView has only one.
  2. The oxView format includes some extra data such as which bases are paired, and what color strands are. This information is populated with the relevant scadnano data. Have the strands be the same color in each tool makes it easier to figure out which strand is which.

For example, this scadnano design:

image

exports like this in oxView:

image

In particular, this provides an immediate visual cue that the view angle in oxView is reversed in both horizontal and vertical directions from that of scadnano, since the purple staple in the bottom right of scadnano appears in the top left of oxView. Rotating it 180 degrees around the y (up-down) axis, and then rotating 180 degree around the z (left-right) axis, then the oxView orientation matches scadnano's:

image

This can also be checked with the axis arrows of oxView and scadnano, which match colors:

image image

Sequences of selected strands are not exported

There was already a feature where only sequences of selected strands could be exported. Now it is possible to declare that exactly the unselected strands should be exported:

image

Commits

  • a071097: bumped version (David Doty) #972
  • 58cd26e: added css class for darker stroke on crossovers within the same helix (David Doty) #972
  • e487457: fixed batch remove label, remove name, set name (Raybipse) #954
  • abcecd2: fixes #953 (Raybipse) #954
  • 22ae227: Fixed batch remove/set for extensions and loopouts (Raybipse) #954
  • f72c32c: implemented logic for filtering connected base pairs (Raybipse) #955
  • 8657d04: Fixed typo in action name for remove strand name (Raybipse) #954
  • d291063: add menu option for retaining color on strand selection (Edwin Chang) #957
  • 1471f3f: implemented logic for filtering connected base pairs (Raybipse) #955
  • 17f944b: closes #895 selected base pair lines is exported (Raybipse) #955
  • 34ff35c: Rebased branch onto dev and fixed minor bug (Raybipse) #955
  • e438f97: Fixed copy image not displaying base lines (Raybipse) #955
  • b3dd9c7: Changed to letterSpacing (Raybipse) #963
  • 146a350: closes #870: Feature request: selection preserves color (Edwin Chang) #957
  • d68babc: reformat code (Edwin Chang) #957
  • 94c0b0f: Refractored code for readability and consistency (RayBipse) #955
  • 1a66286: Setup separate export setting (RayBipse) #963
  • 692e01d: moved set separate text menu (RayBipse) #963
  • a0d3ac2: Added separate text support (RayBipse) #963
  • 5d4cc56: Merge branch 'dev' of https://github.com/UC-Davis-molecular-computing/scadnano into dev (RayBipse) #955
  • 760fb4a: fixes #959: display DNA sequence on extension in order 5' to 3' (David Doty) #960
  • 1840933: fixes bug with setting extension name when no extensions are selected (David Doty) #960
  • 35f4e9f: fixes bug with selecting strand "pieces" (domains/extensions/ends/etc) with new property retain_strand_color_on_selection, which was not being properly prop-drilled into those view components (David Doty) #960
  • da99847: fixed some variable/file names (David Doty) #972
  • c9c2894: fixed problem with non-unique React key when a strand has a 5' and a 3' extension adjacent to the same domain (David Doty) #972
  • 2cfac1f: Update README.md (David Doty) #972
  • 1e78e1e: Fixed the frequent "cannot read undefined" error in console (RayBipse) #963
  • 63b66af: Fixes #941 (RayBipse) #963
  • b307a48: Changed names to snakes case and fixed outline bug (RayBipse) #963
  • bf718f2: Fixed bug export SVG main view doesn't contain a viewbox (RayBipse) #963
  • d0adc28: Merge branch 'dev' into 941-dna-sequences-justified (Ray Zhu) #963
  • 3ce8c86: Fixed wrong merge resolve (RayBipse) #963
  • 3850c48: Fixed bug where selected strands were pink (RayBipse) #963
  • a6b06ac: re-ordered export menu (David Doty) #963
  • 34ba098: added ability to exclude scaffolds from selection when using "select all with same..." (David Doty) #972
  • 33a5630: closes #964: exclude selected strands from export DNA sequences (Dave Doty) #965
  • 77e21ef: Added the button for base pair display (RayBipse) #966
  • 7c5645a: Closes #897 (RayBipse) #966
  • f842e25: Changed the layout for base pair display to checkboxes (RayBipse) #966
  • 4e75ec2: closes #588: export to oxView format (David Doty) #971

v0.19.1

13 Oct 14:51
af78cb4
Compare
Choose a tag to compare

Release notes

A few bug fixes.

Commits

  • 3e752ec: bumped version (David Doty) #951
  • 7395f7f: changed "Select all with same..." trait named "IDT fields" to "Vendor fields" (David Doty) #951
  • 21b7287: fixes #904 large design should not hide strands on hover (Abhishek Gokhale) #949
  • 7da7a68: Formatting changes (Abhishek Gokhale) #949
  • 855fe21: Update README.md (David Doty) #951
  • ca85360: Update README.md (David Doty) #951
  • de91ace: Update README.md (David Doty) #951
  • 0f73968: fixes bug in reading .sc files with old modification keys (David Doty) #951

v0.19.0

07 Sep 00:38
433e709
Compare
Choose a tag to compare

Release notes

IDT fields renamed to Vendor fields

Previously, some fields had names specific to the DNA synthesis company IDT. Now, these have been renamed to the more generic "Vendor" fields:

image

Similarly, the field previously called "IDT text" for modifications has been renamed to "vendor code".

image

The vendor code is used, the same as IDT text was, when exporting DNA sequences to IDT file formats via the Export-->DNA sequences menu.

A similar change was made in the Python package: https://github.com/UC-Davis-molecular-computing/scadnano-python-package/releases/tag/v0.19.0

The change was breaking for the Python package since code using the old field names will have to be re-written. It is not a breaking change if you only use the web interface, since the code reading older .sc files is backwards compatible with the old field names.

Select all with same...

You can select a strand (or multiple strands) and pick Edit-->Copy/Paste/Select-->Select all with same... and select all strands that have the same "trait" as the currently selected strand.

A common case is to use Strand labels to generate "groups" of strands, where strands with the same label are considered in the same group. Then by selecting a strand with that label, and picking "Select all with same..." label:

image

image

all strands with the label are selected:

image

Option for selection box/rope to use intersection instead of containment

In some graphics programs, selecting many objects with a single box will select all objects entirely contained within the box. In others, it will select any object intersecting any part of the box. Scadnano's default behavior is the former, but now the latter can be done through Edit-->Copy/Paste/Select-->Selection box intersection:

image

Then draw a selection box:

image

Note that all strands touching the box are selected:

image

This also applies to rope select mode.

Note that, like with containment, the test for intersection is between the box (or rope-drawn polygon) and the bounding box containing the object (not the object itself). So for instance, although the selection box here does not appear to touch the strand, it does intersect the bounding box of the strand,

image

so the strand ends up selected:

image

Commits

  • cb0d5a2: fixes #902: make menu dropdown wider for Edit-->Copy/Paste/Select (Edwin Chang) #905
  • 1117e88: bumped version (David Doty) #943
  • ff1b027: moved add modification code from design_main_strand.dart to design_main_strand_modification.dart to keep similar code together (David Doty) #943
  • 26bec37: fixed bug in regex for allowed bases on internal modification dialog (David Doty) #920
  • 3e09fab: fixes #919: display internal modifications un-attached to a base between bases (David Doty) #920
  • da641ab: closes #882: select all with same (David Doty) #922
  • ac3cb52: formatting (David Doty) #922
  • 4dece41: added helices as option for "Select all strands with same..." (David Doty) #943
  • b4fa336: closes #598: option for selection box and rope select to use intersection instead of containment (not yet implemented for rope select) (David Doty) #923
  • 8ff9225: formatting (David Doty) #923
  • b31c0dc: closes #924: option for rope select polygon to use intersection instead of containment (David Doty) #926
  • 7999921: Update menu.dart (David Doty) #926
  • 3365b50: fixed example, but problem with #921 still remains (David Doty) #928
  • beb614f: closes #929: rename IDTFields to VendorFields (David Doty) #930
  • 1b6066e: added more tooltips to modification dialogs (David Doty) #930
  • f325b61: bumped version (David Doty) #930
  • 20a2352: fixed unit test (David Doty) #930
  • 9abe176: Update design_footer.dart (David Doty) #943
  • 6208ca5: added keyboard shortcuts to Undo and Redo menus and optional keyboard_shortcut' prop to all MenuDropdownRight` components (David Doty) #943
  • da647f8: removed display_connector field from Modification JSON (David Doty) #932
  • 690c148: closes #931: remove field Modification.id (David Doty) #932
  • f82700a: Update menu.dart (David Doty) #943
  • 376956a: closes #934: deal with non-unique Modification vendor codes (David Doty) #935
  • 00cbd18: closes #917: change deploy action to use node16 (Edwin Chang) #936
  • d8107cb: update formatting and test actions to use latest actions/checkout (Edwin Chang) #936
  • 07a8de3: moved "Show helix coordinates in side view" to View-->Helices submenu and made helix dialogs for setting grid position and position not use saved responses (David Doty) #939
  • 33d2c56: closes #938: changing from grid to no grid removes major ticks (David Doty) #940

v0.18.10

26 Aug 17:23
bb86fcc
Compare
Choose a tag to compare

Bug fix for editing IDT text of internal modifications.

Commits

  • 5d6434e: bumped version (David Doty) #918
  • 4cc8fd3: Update design_main_strand.dart (David Doty) #918
  • 571fda0: fixed bug in editing IDT text of internal modification (David Doty) #918

v0.18.9

26 Aug 04:51
a7fa24d
Compare
Choose a tag to compare

Release notes

Custom delimiters in exported DNA sequences

Added ability to control delimiter symbols in exported DNA sequence files, both delimiters between IDT fields (; in the example below) and between DNA sequences of different domains (- in the example below), e.g.,

image

Which exports this line to a file: strand 1;/5Biosg/-AAAAAAAA-CCCC/ISp9/CCCC-GGGGGGGG;25nm;STD.

Distinction between internal modifications that attach to a base, versus those between bases

Some internal modifications are attached to a base (e.g., internal biotin on a T: /iBiodT/) versus those that go in between bases (e.g., a spacer such as /ISp9/). Previously the web interface assumed all internal modifications are of the former type, and also assumed they could be attached to any base. Now in the web interface (as in the Python package), one can distinguish between these two types, and for modifications attached to a base, can specify a subset of bases that they can attach to (e.g., IDT's internal biotin may only be on a T base):

image

Commits

  • d00fe82: bumped version (David Doty) #916
  • c219170: Update CONTRIBUTING.md (David Doty) #916
  • 0ef4f44: fixes #912: customize delimiter between domains in exported DNA sequences (David Doty) #914
  • c9698af: closes #913: handle internal modifications that go in between bases (David Doty) #915
  • eff3768: fixed edit mod dialog to account for base vs. linker (David Doty) #915

v0.18.8

24 Aug 23:52
3553d90
Compare
Choose a tag to compare

Fixed (continuing) bug in helix roll relax algorithm to ignore intra-helix crossovers and inter-group crossovers.

Commits

  • 0007983: bumped version (David Doty) #911
  • b82a8e9: fixes #906: fix warning about unique React keys (David Doty) #911
  • dd731bf: fixes null crash bug with showing newly created helix in newly created group (David Doty) #911
  • dbdf509: fixed null pointer bug in footer strand details (David Doty) #911
  • 663f28c: fixed helix roll relax algorithm to ignore intra-helix crossovers and inter-group crossovers (David Doty) #911
  • c940c72: formatting (David Doty) #911

v0.18.7

24 Aug 15:07
bc8cb6d
Compare
Choose a tag to compare

Bug fixes related to relaxing helix rolls.

Commits

  • b1aca0e: bumped version (David Doty) #910
  • 2a8f685: Update menu.dart (David Doty) #910
  • 240c772: Update menu.dart (David Doty) #910
  • b85e234: added explanation of Ctrl+click for columns of insertions/deletions to tooltip text for those Edit Mode buttons (David Doty) #910
  • 98d9aec: fixed bug in relaxing helix rolls with intrahelix crossovers and added unit test for that case (David Doty) #910
  • 880194f: fixed relax helix rolls to ignore inter-group crossovers (David Doty) #910

v0.18.6

20 Aug 21:33
89ecffd
Compare
Choose a tag to compare

Fixed bugs in helix relax roll algorithm.

Commits

  • 18bf88f: bumped version (David Doty) #909
  • fca783f: added (commented out) code for faster-rendering base pair lines, but that will not work when exporting selected strands to SVG (David Doty) #909
  • 30ffaca: fixed bug in relaxing helix rolls with loopouts (David Doty) #909
  • 4c65f2d: Update menu.dart (David Doty) #909
  • db57719: fixes #907: fix bug with relaxing helix rolls (David Doty) #908

v0.18.5

18 Aug 16:13
15f0d15
Compare
Choose a tag to compare

Release notes

Minor update re-arranging Edit menu.

Commits

v0.18.4

18 Aug 00:23
357cd11
Compare
Choose a tag to compare

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

image

By selecting "Edit-->Helix rolls-->Set helix rolls to unstrain crossovers":

image

The helix rolls are set to minimize "strain" in the crossovers:

image

image

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
  • 8d0454d: Remove stopgap styling of domains on hover (Benjamin Lee) #480
  • e2d0d70: closes #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • fbe8e08: closes and fixes #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 7435548: closes and fixes a typo in #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 406b8bf: closes, updates, and fixes #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 95e5a84: closes, updates, and fixes #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 62160c5: closes additional changes in #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • f1c584f: closes and formats in #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 5e0d8eb: closes again1 #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 7d28900: closes again2 #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 42d78d8: closes (finally) #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 7c23d9c: closes (again) #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 2dcee78: closes bug #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • f485b0d: closes the bug #849-give-more-useful-error-message-when-sc-file-format-is-incorrect (Pranav Gupta) #866
  • 77a4c54: bumped version (David Doty) #901
  • 87c3f10: added Helix.roll and backbond angles at slice bar position to side view Helix tooltip text (David Doty) #901
  • b4abdae: fixed setting helix roll saved response to be current value of roll (David Doty) #901
  • 4cdb3c4: changed modification Select Mode icon to have capital M instead of b (David Doty) #901
  • 68d7f50: implemented logic for relaxing helix rolls based on crossover locations (not in UI yet) (David Doty) #900
  • bb6db46: Update helix_relax_rolls_test.dart (David Doty) #900
  • 33a6702: more unit tests (David Doty) #900
  • e55eda9: closes #843: automatically set Helix rolls based on crossover locations ("relax" the rolls) (David Doty) #900
  • 6c15bb4: fixed bug with relaxing helix roll on helix with no crossovers and added unit test for that case (David Doty) #901