Skip to content

Releases: UC-Davis-molecular-computing/scadnano-python-package

v0.13.0

22 Nov 08:41
aab5614
Compare
Choose a tag to compare

Breaking Change: Swap x and z coordinates

Python scripts using the "none" grid and specifying 3D coordinates will need to be rewritten so that x and z coordinates are swapped.

Previously, positive x moved right in the main view and into the screen in the side view, and positive z moved right in the side view and out of the screen in the main view. Now these are swapped.

If you are only using the web interface, you shouldn't see any change. But Python scripts that specify (x,y,z) coordinates will need to be updated to swap the roles of x and z.

If you are curious why this was done, read here: UC-Davis-molecular-computing/scadnano#488

Commits

  • [c6385f0]: Fixes #138; add Python 3.6 CI tests (Benjamin Lee) #140
  • [0546749]: Fixes #125; CI checks for docs and PyPI packaging (Benjamin Lee) #141
  • [76a85be]: Remove misplaced name field (Benjamin Lee) #141
  • [8699cb7]: Remove publish from task name for clarity (Benjamin Lee) #141
  • [b137c80]: added FAM, ROX, and Fluorescein modifications; added code to automatically population field Modification.id with Modification.idt_text if latter is specified and former is not (David Doty) #146
  • [7486223]: fixed error in setting Modification.id from Modification.idt_text (David Doty) #146
  • [b6f75d4]: included everything in modifications and origami_rectangle when importing scadnano (David Doty) #146
  • [61ba537]: updated defaults for Design.set_default_idt (David Doty) #146
  • [11d6606]: fixed some mypy errors, and added unique_names argument to set_default_idt to break with cadnano's naming convention and ensure strand names are unique (David Doty) #146
  • [11d9d67]: changed default IDT purification with modifications from PAGE to HPLC (David Doty) #146
  • [c24784f]: added code to import IDT fields from JSON, along with unit tests (David Doty) #146
  • [ecf5ced]: Adds PR to CI workflow (Benjamin Lee) #143
  • [0bd0082]: Remove push events from CI workflow (Benjamin Lee) #143
  • [8787c6d]: Update README.md (David Doty) #146
  • [0e5b323]: corrected relative link to .sc file in tutorial (David Doty) #146
  • [2ad4868]: Fixes #144; swap position x z coordinate interpretation (Benjamin Lee) #145
  • [34d24fe]: Rewrite none-grid example scripts for #144 (Benjamin Lee) #145
  • [a2a31f6]: Update proposal example for #144 (Benjamin Lee) #145
  • [3382247]: updated docstrings for Position3D (David Doty) #146
  • [10eca78]: updated StrandBuilder docstrings (David Doty) #146
  • [1c36eeb]: Update scadnano.py (David Doty) #146
  • [b91ef99]: reverted previous edit of docstrings (David Doty) #146
  • [a94102c]: fixed erroneous reference to method to() to be move() (David Doty) #146

v0.12.2

11 Sep 15:35
9f7ddde
Compare
Choose a tag to compare

For Python 3.6, dataclasses backport library is now automatically installed when installing via pip.

The README still contains instructions for installing it manually, in case a user wants to simply download the scadnano.py file to use with Python 3.6. But they should be updated to emphasize that it is unnecessary to install it manually when installing scadnano via pip.

Commits

  • [1102804]: Adding installation instruction for python dataclasses for Python 3.6 (Cosmo) #135
  • [1999445]: Require python 3.6 min (Cosmo) #135
  • [2061a9f]: added instructions about commit messages to CONTRIBUTING; bumped version (David Doty) #137

v0.12.1

10 Sep 22:27
a06ce07
Compare
Choose a tag to compare

cadnano export upgraded

Can now export to cadnano from design that uses multiple helix groups.

rotate domains

Added method Strand.rotate_domains allowing domains to be "rotated" on a strand. Think of it like adding a crossover between the 5' and 3' ends, and removing another crossover.

type hints

Beefed up type hints, in particular making type variables StrandLabel and DomainLabel for the types of strand labels and domain labels, allowing Design, Strand, and Domain to be parameterized by them, so that a static type checker such as mypy will catch errors such as

domain: Domain[str] = Domain(label=123)    # error
domain2: Domain[str] = Domain(label='123') # fine
domain2.label = 123                        # error

NOTE: this particular type hint no longer makes sense since labels are now assumed to be strings: https://github.com/UC-Davis-molecular-computing/scadnano-python-package/releases/tag/v0.18.0

Also got rid of all previous mypy type errors.

Commits

  • [41a7f70]: updated paper URL now that DNA 2020 paper is published (David Doty) #136
  • [304e120]: added rotate_domains method to Strand to "rotate" domains of strand (i.e., like adding a crossover between the 5' and 3' ends, and removing another crossover) (David Doty) #136
  • [b7e41d0]: Design.write_scadnano_file now warns if a Loopout is the first or last substrand on a Strand (still allowed in intermediate designs) (David Doty) #136
  • [903510d]: fixed all mypy warnings; closes #109 (David Doty) #136
  • [b2012e9]: fixed mypy warnings in origami_rectangle (David Doty) #136
  • [a3248bc]: made Design, Strand and Domain generic parameterized by StrandLabel and DomainLabel. Made strand label not indented in serialized JSON (David Doty) #136
  • [080bf6d]: added example with domains names (some mismatching) (David Doty) #136
  • [a2a6b07]: updated names example to have more kinds of mismatches (David Doty) #136
  • [27baee2]: annotated variable to quiet mypy (David Doty) #136
  • [c5bdb1c]: Update names_domains_strands.py (David Doty) #136
  • [9b54b1e]: Export code supports helix groups and associated unittest. test_6_helix_bundle_honeycomb restored. (Cosmo) #133
  • [4d62212]: Export code supports helix groups and associated unittest. test_6_helix_bundle_honeycomb restored. (Cosmo) #133
  • [399f905]: Export code supports helix groups and associated unittest. test_6_helix_bundle_honeycomb restored. (Cosmo) #133
  • [6233075]: Export code supports helix groups and associated unittest. test_6_helix_bundle_honeycomb restored. (Cosmo) #133
  • [a274a98]: Forcing the add of test_6_helix_bundle_honeycomb.sc which was ignored (Cosmo) #133
  • [3753e36]: Correct type annotation (Cosmo) #133
  • [627d45b]: Correcting syntax error (Cosmo) #133
  • [db82d47]: bumped version (David Doty) #136

v0.12.0

01 Sep 00:31
653d450
Compare
Choose a tag to compare

Optional field name now supported in Strand, Domain, and Loopout.

The domain/loopout name is displayed (optionally) in the scadnano web interface main view. The strand name is displayed on mouseover, in the tooltip that pops up, and if "backbone mode" is selected, in the footer at the bottom of the page.

All three are also used with the dsd DNA sequence designer (not public yet).

Commits

  • [3ebcb86]: added move (relative offset) chained method to README (David Doty) #131
  • [eb7563f]: added link to json.dumps documentation in docstrings for Loopout.label and Domain.label (David Doty) #131
  • [ca482ba]: added parameter check_length to Design.assign_dna that enforces the sequence is exactly the length of the Strand/Domain being assigned (David Doty) #131
  • [2afc921]: added optional name fields to Strand, Domain, and Loopout; these are used now instead of label to assign names to Strands, Domains, and Loopouts in the dsd DNA strand designer (though Strand labels are still used to assign Strand groups in the dsd sequence designer) (David Doty) #131
  • [db5d31f]: bumped version to 0.12.0 (David Doty) #131
  • [5bec304]: removed _version.py file (David Doty) #131

v0.11.2

25 Aug 23:01
fb6828c
Compare
Choose a tag to compare

Added loopout labels. Now you can do this:

(design.strand(0, 0).to(8)
 .loopout(1, 4).with_domain_label('loopout label')
 .to(0))

Commits

  • [ed0ea3b]: removed example; made StrandBuilder._strand private and added getter that raiases exception if Strand has not been created yet (David Doty) #130
  • [23d5a1c]: fixed unit test after changing indenting JSON behavior if Helix.position is specified (David Doty) #130
  • [9a969ce]: added loopout labels; bumped version (David Doty) #130

v0.11.1

25 Aug 00:59
1ac5e4b
Compare
Choose a tag to compare

The main new feature is a method StrandBuilder.move and parameter move in the existing methods StrandBuilder.cross and StrandBuilder.loopout. move is like to, but is a relative offset rather than an absolute offset.

For example, to make a strand that, starting at helix 0, offset 123, goes 8 bases forward, then crosses over to the same offset on helix 1 and goes 16 bases in reverse, then crosses over to helix 2 (but the crossover jumps 2 offsets back), then goes 10 bases forward:

(design.strand(0, 123)
 .move(8)
 .cross(1)
 .move(-16)
 .cross(2, move=-2)
 .move(10))

image

where the parameter to the method move, as well as the parameter named move, are relative to the current offset. This is equivalent to the more cumbersome absolute offsets with to:

(design.strand(0, 123)
 .to(131)
 .cross(1)
 .to(115)
 .cross(2, offset=113)
 .to(123))

Commits

  • [37db033]: updated tutorial with correct parameter names for Crossover constructor (David Doty) #129
  • [0808d88]: fixed code display in docstrings (David Doty) #129
  • [2499733]: added move method to StrandBuilder and move parameter to StrandBuilder.cross and StrandBuilder.loopout to enable relative (instead of absolute) specification of offsets when creating Domains through chained methodso (David Doty) #129
  • [0b43e14]: added examples; bumped version (David Doty) #129
  • [4760354]: fixed unit test now that positions are automatically created in Helix when grid is None (David Doty) #129

v0.11.0

06 Aug 21:50
e03a5ea
Compare
Choose a tag to compare

Note there are two breaking changes:

  • removed helix_template and num_helices from Design constructor. This feature wasn't carrying its weight, given the complexity it introduced to parse optional parameters in the Design constructor. It's simple enough to simply type something like

    helices=[Helix(idx=idx, <other properties you want>) for idx in range(num_helices)]
  • removed major_tick_distance from Design. Similarly, this feature wasn't carrying its weight and REALLY complicated parsing optional parameters. To assign the same major_tick_distance to every Helix, simply give the same value in every Helix constructor, e.g.,

    helices=[Helix(idx=idx, major_tick_distance=10) for idx in range(num_helices)]

Commits

  • [b9e7eb6]: ensures default helices view order is assigned properly in each helix group (David Doty) #128
  • [6874906]: BREAKING CHANGE: removed helix_template and num_helices from Design constructor (David Doty) #128
  • [419caeb]: bumped version for breaking change (removed helix_template and num_helices from Design constructor parameters) (David Doty) #128
  • [e7e223f]: ignoring .sc files in tests_inputs/cadnano_v2_export directory (David Doty) #128
  • [fb78aa1]: BREAKING CHANGE: removed major_tick_distance from Design (David Doty) #128
  • [d36d457]: added example with helix groups (David Doty) #128
  • [507c601]: closes #104; add support for Helix.major_tick_start and Helix.major_tick_periodic_distances (David Doty) #128
  • [3f59e6d]: re-ran examples to produce latest version (David Doty) #128
  • [107b677]: removed DomainLabel and StrandLabel as types in typing hints (David Doty) #128
  • [dceefc1]: fixes #126; fix bug where strands are not always assigned a color (David Doty) #128

v0.10.3

24 Jul 00:30
1895aa9
Compare
Choose a tag to compare

This was mainly to test some functionality with auto-generating docs and PyPI releases.

Commits

  • [42e6fbd]: fixed version-finding function in setup.py (David Doty) #124
  • [2e81a57]: moved version up closer to top of scadnano.py (David Doty) #124
  • [ab79777]: removed print statement from setup.py (David Doty) #124
  • [a2c4763]: Update conf.py (David Doty) #124

v0.10.2

24 Jul 00:13
157c9b0
Compare
Choose a tag to compare

Introduces Helix groups in preparation for implementing them in the web interface: UC-Davis-molecular-computing/scadnano#249

Helix groups allow groups of helices to be grouped and given their own position, orientation, and grid, to help with designs where not all helices are parallel.

Commits

  • [acd4e81]: Update README.md (David Doty) #123
  • [f5bbd38]: updated version in test files (David Doty) #123
  • [05db22d]: removed in_browser test from examples and re-ran with new version (David Doty) #122
  • [24bd68e]: closes #121; introduces Helix groups to allow groups of helices to be grouped and given their own position, orientation, and grid, to help with designs where not all helices are parallel (David Doty) #122
  • [299e9ea]: removed _version.py so it only needs to be specified in scadnano.py (David Doty) #123
  • [631c1f3]: minor docstring changes (David Doty) #123

v0.10.1a

23 Jul 00:16
1dc7f98
Compare
Choose a tag to compare

Calling this release 0.10.1a, but really it's just to correct for the fact that I messed up the version number 0.10.1 in the source code on the last PR.

Commits

  • [4d82e70]: incorrectly bumped version last time; bumping it in _version.py now (David Doty) #120