Releases: UC-Davis-molecular-computing/scadnano-python-package
v0.13.0
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
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
v0.12.1
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
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
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
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))
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
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 likehelices=[Helix(idx=idx, <other properties you want>) for idx in range(num_helices)]
-
removed
major_tick_distance
fromDesign
. Similarly, this feature wasn't carrying its weight and REALLY complicated parsing optional parameters. To assign the samemajor_tick_distance
to everyHelix
, simply give the same value in everyHelix
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
This was mainly to test some functionality with auto-generating docs and PyPI releases.
Commits
v0.10.2
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