UC-Davis-molecular-computing / scadnano

Web application for designing DNA structures such as DNA origami.
https://scadnano.org
MIT License
21 stars 13 forks source link

Feature request for web interface: more selection options #867

Open Sam-Davidson opened 1 year ago

Sam-Davidson commented 1 year ago

I would like to be able to: -select all strands of a particular color -select all staples that have a domain in a particular row (not just selecting the domains in that row) -select all staples that have their 3' end (or 5' end) in a particular row (not just selecting the ends in that row) -create named "staple groups" -select all staples belonging to a staple group -hide staples by group -color staples by group (but it should also be possible for staples to belong to multiple groups, and staples of multiple colors should be allowed to belong to one group)

dave-doty commented 1 year ago

I would like to be able to: -select all strands of a particular color

There's probably a more general idea here. We already have "select all in same helix group". I could imagine a "Select all with same..." and then a dialog pops up with various checkboxes (same color, same helix group, same strand label, same helix). There's already a notion of the "current" helix group, but for other properties where you'd want the ability to specify which property value to filter on, one could imagine first selecting a group of strands and then picking this option, and it selects all strands with the same property value.

For example, if you select three strands, one green and the other two red, then select all with same color picks all strands that are either red or green.

-select all staples that have a domain in a particular row (not just selecting the domains in that row)

This would be a special case of above (same helix).

I've also thought it would be useful to make the box/rope select have an option to pick anything intersecting the box. Currently it selects strands entirely within the box, and won't select a strand that's partially inside and partially outside the box. The former is what I usually want but sometimes want the latter, and it would make it simple to select all strands with a domain on a particular helix.

-select all staples that have their 3' end (or 5' end) in a particular row (not just selecting the ends in that row)

-create named "staple groups"

There's a notion of strand "labels" that can be used for this (e.g. let the label be a string and assign the same string to all strands you want in the same group), although currently it cannot be edited in the web interface. See here for the issues involved in that: #469

-select all staples belonging to a staple group -hide staples by group -color staples by group (but it should also be possible for staples to belong to multiple groups, and staples of multiple colors should be allowed to belong to one group)

All this would be possible with strand labels, but of course we'd want the ability to edit them first (#469).

dave-doty commented 1 year ago

Note that we should implement #469 at the same time as this (but we can handle them in two separate branches).

dave-doty commented 1 year ago

Selecting all strands with same "trait" as the currently selected strand(s) is now implemented in the dev branch (https://scadnano.org/dev/); see issue #882.