[ ] extract hairpins, self-dimers, and hetero-dimers using RNAfold
[ ] constrain codon usage
[ ] compute codon table from organism genome
[ ] Implement rejection sampling loop for codon optimization via declarative API
[ ] use to write poly/tutorials/004_codon_optimization_test.go
[ ] pass in constraints via structs, which can be serialized
[ ] utilize concurrency for sampling
[ ] restrict checks to ranges, GFF features
[ ] utilize Codon Influence Metric
[ ] Harmonize primers.pcr and clone simulations
[ ] Add k-mer counter
[ ] add benchmarks
[ ] add optimizations when counts of smaller k-mers not needed
[ ] Optimization: grow capacity for append operations when number of inserted elements are known
Why are you making these changes?
Explain why these changes are necessary. Link to GitHub issues here with the format fixes: #XXX to indicate this PR resolves the issue.
For a while I have been wanting to get my hands dirty applying poly to design problems of intermediate complexity. As I read the codebase, I realized some of what I wanted to add was already there but was missing some key utilities, particularly around searching, checkers, and data models. I also saw some opportunities for API harmonization where overlaps existed in distributed submodules of the codebase.
Are any changes breaking? (IMPORTANT)
Will merging this PR change poly's API in a non-backwards-compatible manner?
YES
changes storage of encoded alphabet symbols to uint8, which significantly reduces storage costs when stored in a slice
Pre-merge checklist
All of these must be satisfied before this PR is considered
ready for merging. Mergeable PRs will be prioritized for review.
[ ] New packages/exported functions have docstrings.
[X] New/changed functionality is thoroughly tested.
[ ] New/changed functionality has a function giving an example of its usage in the associated test file. See primers/primers_test.go for what this might look like.
[ ] Changes are documented in CHANGELOG.md in the [Unreleased] section.
Changes in this PR
Clearly and concisely summarize the changes you are making. Bullet points are completely okay. Please be specific, saying "improves X" is not enough!
clone.Enzyme
(produces a Regexp reference)transform
random
poly/tutorials/004_codon_optimization_test.go
primers.pcr
andclone
simulationsWhy are you making these changes?
Explain why these changes are necessary. Link to GitHub issues here with the format
fixes: #XXX
to indicate this PR resolves the issue.For a while I have been wanting to get my hands dirty applying poly to design problems of intermediate complexity. As I read the codebase, I realized some of what I wanted to add was already there but was missing some key utilities, particularly around searching, checkers, and data models. I also saw some opportunities for API harmonization where overlaps existed in distributed submodules of the codebase.
Are any changes breaking? (IMPORTANT)
Will merging this PR change
poly
's API in a non-backwards-compatible manner?YES
uint8
, which significantly reduces storage costs when stored in a slicePre-merge checklist
All of these must be satisfied before this PR is considered ready for merging. Mergeable PRs will be prioritized for review.
primers/primers_test.go
for what this might look like.CHANGELOG.md
in the[Unreleased]
section.