Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hacktoberfest Scratchpad #382

Closed
wants to merge 8 commits into from
Closed

Conversation

abondrn
Copy link
Contributor

@abondrn abondrn commented Oct 6, 2023

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!

  • Add ability to scan for patterns with ambiguous nucleotide codes
    • harmonize with clone.Enzyme (produces a Regexp reference)
    • harmonize with transform
    • add sampler in random
    • harmonize with io/rebase
  • Add basic CRISPR models
  • Add more ProblematicSequenceFuncs
  • 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.
  • 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.
  • All code is properly formatted and linted.
  • The PR template is filled out.

@abondrn abondrn closed this Oct 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants