Simple oligo analysis and primer design
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Fix dead version-injection sed in release.yml (#182) The "Configure version" steps in build-wheels and build-sdist patched setup.py's `version=...,` line to apply the .devN (test) / .postN (production rebuild) suffix. That line no longer exists in setup.py -- versioning moved to pyproject.toml's dynamic `attr: primer3.__version__` some time ago -- so the sed silently matched nothing and did nothing. Every TestPyPI "test" release has therefore been published under the bare release version (e.g. 2.4.0) instead of the intended 2.4.0.dev1, confirmed back through 2.2.0, 2.3.0, and 2.3.1 on TestPyPI. This had no effect on normal first-attempt production releases (build_number=1 resolves to the same base version either way), but would silently fail to apply a .postN suffix on a production rebuild, and misrepresents test builds as the final release version on TestPyPI. Patch primer3/__init__.py's `__version__` line instead, which is both the actual source of truth and what validate-version already parses. Verified locally: patching __init__.py to '2.4.0.dev1' and running `python -m build --sdist` produces primer3_py-2.4.0.dev1.tar.gz. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
Update docs/development.md for master -> main rename (#184) The default branch was renamed from master to main on GitHub; update the branching-strategy docs to match. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
Drop typing.Dict/List/Tuple in favor of builtin generics (#183) * Drop typing.Dict in favor of builtin dict Python 3.8 support has been retired and the project now requires Python 3.9+, which supports PEP 585 generic aliases on builtin collection types. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Drop typing.List and typing.Tuple in favor of builtins Same PEP 585 rationale as the typing.Dict cleanup: the project now requires Python 3.9+, so these can be builtin generics instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
Drop typing.Dict/List/Tuple in favor of builtin generics (#183) * Drop typing.Dict in favor of builtin dict Python 3.8 support has been retired and the project now requires Python 3.9+, which supports PEP 585 generic aliases on builtin collection types. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Drop typing.List and typing.Tuple in favor of builtins Same PEP 585 rationale as the typing.Dict cleanup: the project now requires Python 3.9+, so these can be builtin generics instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
Drop typing.Dict/List/Tuple in favor of builtin generics (#183) * Drop typing.Dict in favor of builtin dict Python 3.8 support has been retired and the project now requires Python 3.9+, which supports PEP 585 generic aliases on builtin collection types. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * Drop typing.List and typing.Tuple in favor of builtins Same PEP 585 rationale as the typing.Dict cleanup: the project now requires Python 3.9+, so these can be builtin generics instead. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
p3helpers.pyx houses new sequence and design helper functions Sequence sanitization of IUPAC non-{A,C,G,T,a,c,g,t} bases become {N, n} and also reverse complement added. Separate methods exist for byte strings and unicode strings with error handling documentation update for p3helpers.pyx | 3 年前 | |
Modernize build system, release process and pin Cython version (#155) * Modernize build system - Update and pin Cython version - Add Python 3.13 support - Improve build configuration and testing - Add custom build extensions * Update release process and documentation - Enable manual branch selection for docs workflow - Update release process documentation - Document setuptools package warnings - Rename workflow files for consistency - Replace build-wheels-pypi.yml with release.yml * additional documentation cleanup * migrate bash markdown to console w/ prompt symbol tokenization * consolidate deps in pyproject.toml + update MANIFEST.in | 1 年前 | |
Updated `AUTHORS`, `MANIFEST.IN`. Validated all files in tar.gz and wheel. renamed docs/requirements.txt to docs/doc-requirements.txt. Renamed top-level requirements.txt to dev-requirements.txt and added content, `Cython`, `pre-commit`, and `pytest` Fixed `sphinx` documenting of inherited members of `ThermoAnalysis`. updated `README.md` header to markdown format | 3 年前 | |
2.4.0 release (#181) - Bump __version__ to 2.4.0 - Finalize the 2.4.0 CHANGES entry (upstream Primer3 backport fixes from PR #179, Python 3.15 support and Python 3.8 wheel retirement from PR #180) - Update copyright end date in primer3/__init__.py's license header to 2026 (the __copyright__ string was already current) - Sync docs/quickstart.md and docs/development.md Python version ranges with the 3.9-3.15 support window Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
Initial commit | 12 年前 | |
Modernize build system, release process and pin Cython version (#155) * Modernize build system - Update and pin Cython version - Add Python 3.13 support - Improve build configuration and testing - Add custom build extensions * Update release process and documentation - Enable manual branch selection for docs workflow - Update release process documentation - Document setuptools package warnings - Rename workflow files for consistency - Replace build-wheels-pypi.yml with release.yml * additional documentation cleanup * migrate bash markdown to console w/ prompt symbol tokenization * consolidate deps in pyproject.toml + update MANIFEST.in | 1 年前 | |
Update README.md (#172) Fixes #171 | 5 个月前 | |
Add Python 3.15 support, retire Python 3.8 wheels (#180) cibuildwheel v3.3.1 cannot build Python 3.15 wheels (that landed in v4.0+), and Cython~=3.1.0 doesn't officially support 3.15's Limited API changes (needs the 3.3.x line). Bumping cibuildwheel to v4.2.0 drops its ability to build Python 3.8 wheels (EOL since Oct 2024), so PyPI will no longer publish prebuilt Python 3.8 wheels going forward; 3.8 users will need to build from sdist or upgrade. - requires-python raised to >=3.9, classifiers updated (3.8 removed, 3.15 added) - Cython build requirement bumped from ~=3.1.0 to ~=3.3.0 - test.yml and release.yml matrices updated to 3.9-3.15 - cibuildwheel bumped to v4.2.0; macOS arm64 is now built unconditionally since arm64 is supported for all remaining versions (3.9+), removing a broken version-string comparison - sdist job's pinned Cython version aligned with pyproject.toml - CHANGES calls out the Python 3.8 wheel retirement as a standalone, user-facing entry Verified locally: editable install and full test suite pass under Python 3.14 with Cython 3.3.0. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
thal.c and thal.h updated for 2.6.1 drawDimer and drawHairpin code is legacy with an updated due to variable output from 2.6.1 code for CLI and non CLI. test_thermoanalysis tests pass Bugs fixed in upstream oligotm_main.c as the argc > 14 was not enough needed to bump it to argc > 20. Also the new -dm and -df arguments colided with the parser for -d and broke that when both where specified. This was fixed by strncmp("-d", argv[i], 2) -> strncmp("-d", argv[i], 3) libprimer3.c update for 2.6.1. primerdesign.pyx created to replace primerdesign_py.c and primerdesign_helpers.c. global args and sequence arges are passed to the choose_primers function using read_boulder.read_boulder_record. added support for masking and PRIMER_MASK_KMERLIST_PATH global argument Utility boulder generation and parsing now in argdefaults.py instead of wrappers.py as is it is used by primerdesign module now in addition to wrappers see argdefaults.format_boulder_io for details of output generation this function should be updated to support new 2.6.1 keys in a future PR moved wrap and unwrap code from tessts._simulatedbindings to argdefaults module Enable repeat use of keys in boulder files using TAGS_APPEND. Added test_argdefaults.py to allow round trip testing from boulder to python dict unwrap/wrap works. Fixed unwrap lambda parsing to check for decimal points in floating point values to increase accuracy for sim to binding testing additional camelCase to snake_case conversion. snakecase for parse_multirecord_boulder_io and parse_boulder_io Added not to indicate we need to make wrap/unwrap work round trip tests updated for new code. IOErrors are now OSErrors per Python 3 convention isort update to 5.12.0 for pre-commit to fix linux subprocess failure with a poetry environment | 3 年前 | |
Add Python 3.15 support, retire Python 3.8 wheels (#180) cibuildwheel v3.3.1 cannot build Python 3.15 wheels (that landed in v4.0+), and Cython~=3.1.0 doesn't officially support 3.15's Limited API changes (needs the 3.3.x line). Bumping cibuildwheel to v4.2.0 drops its ability to build Python 3.8 wheels (EOL since Oct 2024), so PyPI will no longer publish prebuilt Python 3.8 wheels going forward; 3.8 users will need to build from sdist or upgrade. - requires-python raised to >=3.9, classifiers updated (3.8 removed, 3.15 added) - Cython build requirement bumped from ~=3.1.0 to ~=3.3.0 - test.yml and release.yml matrices updated to 3.9-3.15 - cibuildwheel bumped to v4.2.0; macOS arm64 is now built unconditionally since arm64 is supported for all remaining versions (3.9+), removing a broken version-string comparison - sdist job's pinned Cython version aligned with pyproject.toml - CHANGES calls out the Python 3.8 wheel retirement as a standalone, user-facing entry Verified locally: editable install and full test suite pass under Python 3.14 with Cython 3.3.0. Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> | 12 天前 | |
added pre-commit hooks initial. - Following work will add in `mypy` and `isort` - added in pre-commit documentation in `quickstart.rst` Github python action initial commit added GitHub Action workflow badge fix MacOS memory delta allowance in test_primerdesign.test_memoryLeaks. Delta remains the same on Linux thal.c type comparison issues update: if ('\0' == oligo_f) --> if (oligo_f == NULL) if ('\0' == oligo_r) --> if (oligo_r == NULL) oligotm.c type comparison issue update: seq != '\0' removed removed Travis as a CI Updated testing documentation to `pytest` | 3 年前 |
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
primer3-py:简单的寡核苷酸分析与引物设计
Primer3-py 是广受欢迎的 Primer3 库的 Python 抽象 API。其目的是为自动化寡核苷酸分析和设计提供一个简单且可靠的接口。
常规的寡核苷酸分析操作简便:
>>> import primer3
>>> primer3.calc_tm('GTAAAACGACGGCCAGT')
54.695494691112515
>>> primer3.calc_hairpin('CCCCCATCCGATCAGGGGG')
ThermoResult(structure_found=True, tm=66.75, dg=-3176.92, dh=-36300.00, ds=-106.80)
... 并且“快速”(比传统子进程包装器快约 1000 倍):
In [1]: import primer3
In [2]: import tests.wrapper
In [3]: %timeit primer3.calc_tm('GTAAAACGACGGCCAGT')
100000 loops, best of 3: 4.74 us per loop
In [4]: %timeit test.wrappers.calc_tm('GTAAAACGACGGCCAGT')
100000 loops, best of 3: 5.78 ms per loop
Primer3-py 还包含 Primer3 primer design engine 的绑定,方便您直接使用这套成熟的流程。其输入输出参数与原始 Primer3 保持一致。
请注意,尽管我们提供了相关绑定,但不对 Primer3 设计引擎本身提供技术支持。有关该引擎的问题,请直接联系 Primer3 开发团队:https://github.com/primer3-org/primer3
Primer3 2.6.1 设计参数手册副本可通过以下链接获取: primer3 v2.6.1 manual

