diff options
Diffstat (limited to 'python-pydna.spec')
-rw-r--r-- | python-pydna.spec | 1099 |
1 files changed, 1099 insertions, 0 deletions
diff --git a/python-pydna.spec b/python-pydna.spec new file mode 100644 index 0000000..79d3f7a --- /dev/null +++ b/python-pydna.spec @@ -0,0 +1,1099 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pydna +Version: 5.2.0 +Release: 1 +Summary: Representing double stranded DNA and functions for simulating cloning and homologous recombination between DNA molecules. +License: BSD +URL: https://pypi.org/project/pydna/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/84/da/0c926cecd9ea436f54b9ec2e3aa8ab6f71936ce5eb8be312db68ec0ce5a0/pydna-5.2.0.tar.gz +BuildArch: noarch + +Requires: python3-appdirs +Requires: python3-biopython +Requires: python3-cai2 +Requires: python3-matplotlib +Requires: python3-networkx +Requires: python3-pillow +Requires: python3-prettytable +Requires: python3-pyfiglet +Requires: python3-pyparsing +Requires: python3-pyperclip +Requires: python3-pyqt5 +Requires: python3-requests +Requires: python3-scipy + +%description +#  pydna + +| [](https://github.com/BjornFJohansson/pydna/actions?query=workflow%3A%22Tests+%26+Coverage%22) |[](https://codecov.io/gh/BjornFJohansson/pydna/branch/master) | [](https://badge.fury.io/py/pydna) |[](https://anaconda.org/bjornfjohansson/pydna) | [](https://groups.google.com/g/pydna) | +|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| +| [](http://pydna.readthedocs.io/?badge=latest) |[](https://github.com/BjornFJohansson/pydna/issues) | [](https://anaconda.org/bjornfjohansson/pydna) |[](https://github.com/BjornFJohansson/pydna/stargazers) | | + + +Planning genetic constructs with many parts and assembly steps, such as recombinant +metabolic pathways :petri_dish:, are often difficult to **properly** document as is evident from the poor +state of documentation in the scientific literature :radioactive:. + + +The pydna python package provide a human-readable formal descriptions of :dna: cloning and genetic assembly +strategies in Python :snake: which allow for simulation and verification. + + +Pydna can be used as [executable documentation](https://en.wikipedia.org/wiki/Literate_programming) for cloning. + + +A cloning strategy expressed in pydna is **complete**, **unambiguous** and **stable**. + + +Pydna provides simulation of: + +- Restriction digestion +- Ligation +- PCR +- Primer design +- Gibson assembly +- Golden gate assembly +- Homologous recombination +- Gel electrophoresis of DNA with generation of gel images + +Virtually any sub-cloning experiment can be described in pydna, and its execution yield +the sequences of intermediate and final DNA molecules. + +Pydna has been designed with the goal of being understandable for biologists with only some basic understanding of Python. + +Pydna can formalize planning and sharing of cloning strategies and is especially useful for complex or combinatorial +DNA molecule constructions. + + +To get started, we have compiled some [simple examples](https://github.com/MetabolicEngineeringGroupCBMA/pydna-examples#pydna-examples). +For more elaborate use, look at some assembly strategies of D-xylose metabolic pathways [MetabolicEngineeringGroupCBMA/ypk-xylose-pathways](https://github.com/MetabolicEngineeringGroupCBMA/ypk-xylose-pathways#pereira-et-al-2016). + + + + + + + + + +## Usage + +Most pydna functionality is implemented as methods for the double stranded DNA sequence record +classes Dseq and Dseqrecord, which are subclasses of the [Biopython](http://biopython.org/wiki/Main_Page) [Seq](http://biopython.org/wiki/Seq) and [SeqRecord](http://biopython.org/wiki/SeqRecord) classes. + +These classes make cut and paste cloning and PCR very simple: + + >>> from pydna.dseq import Dseq + >>> seq = Dseq("GGATCCAAA","TTTGGATCC",ovhg=0) + >>> seq + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> from Bio.Restriction import BamHI + >>> a,b = seq.cut(BamHI) + >>> a + Dseq(-5) + G + CCTAG + >>> b + Dseq(-8) + GATCCAAA + GTTT + >>> a+b + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> b+a + Dseq(-13) + GATCCAAAG + GTTTCCTAG + >>> b+a+b + Dseq(-17) + GATCCAAAGGATCCAAA + GTTTCCTAGGTTT + >>> b+a+a + Traceback (most recent call last): + File "<stdin>", line 1, in <module> + File "/usr/local/lib/python2.7/dist-packages/pydna/dsdna.py", line 217, in __add__ + raise TypeError("sticky ends not compatible!") + TypeError: sticky ends not compatible! + >>> + +As the example above shows, pydna keeps track of sticky ends. + +Notably, homologous recombination and Gibson assembly between linear DNA fragments +can be easily simulated without any additional information besides the primary sequence of the fragments. + +Gel electrophoresis of DNA fragments can be simulated using the included gel module + + + Jupyter QtConsole 4.7.7 + Python 3.8.5 | packaged by conda-forge | (default, Aug 29 2020, 01:22:49) + Type 'copyright', 'credits' or 'license' for more information + IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help. + + In [1]: from pydna.gel import gel + + In [2]: from pydna.ladders import PennStateLadder + + In [3]: from pydna.dseqrecord import Dseqrecord + + In [4]: gel([PennStateLadder,[Dseqrecord("A"*2000)]]) + Out[4]: + + + + + + +Pydna can be very compact. The eleven lines of Python below simulates the construction of a recombinant plasmid. +DNA sequences are downloaded from Genbank by accession numbers that are guaranteed to be stable over time. + + from pydna.genbank import Genbank + gb = Genbank("myself@email.com") # Tell Genbank who you are! + gene = gb.nucleotide("X06997") # Kluyveromyces lactis LAC12 gene for lactose permease. + from pydna.parsers import parse_primers + primer_f,primer_r = parse_primers(''' >760_KlLAC12_rv (20-mer) + ttaaacagattctgcctctg + + >759_KlLAC12_fw (19-mer) + aaatggcagatcattcgag ''') + from pydna.amplify import pcr + pcr_prod = pcr(primer_f,primer_r, gene) + vector = gb.nucleotide("AJ001614") # pCAPs cloning vector + from Bio.Restriction import EcoRV + lin_vector = vector.linearize(EcoRV) + rec_vec = ( lin_vector + pcr_prod ).looped() + +Pydna can automate the simulation of [sub cloning](http://en.wikipedia.org/wiki/Subcloning) experiments using +python. This is helpful to generate examples for teaching purposes. + +Read the documentation (below) or the [cookbook](https://github.com/BjornFJohansson/pydna/blob/master/docs/cookbook/cookbook.ipynb) with example files +for further information. + +Please post a message in the [google group](https://groups.google.com/d/forum/pydna) +for pydna if you need help or have problems, questions or comments :sos:. + +Feedback & suggestions are very welcome! + + + + +## Who is using pydna? + +Taylor, L. J., & Strebel, K. (2017). +Pyviko: an automated Python tool to design gene knockouts in complex viruses with overlapping genes. +BMC Microbiology, 17(1), 12. +[PubMed](https://www.ncbi.nlm.nih.gov/pubmed/28061810) + + +Wang, Y., Xue, H., Pourcel, C., Du, Y., & Gautheret, D. (2021). +2-kupl: mapping-free variant detection from DNA-seq data of matched samples. +In Cold Spring Harbor Laboratory (p. 2021.01.17.427048). [DOI](https://doi.org/10.1101/2021.01.17.427048) +[PubMed](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8180056) + + +[An Automated Protein Synthesis Pipeline with Transcriptic and Snakemake](http://blog.booleanbiotech.com/transcriptic_protein_synthesis_pipeline.html) + + +and other projects on [github](https://github.com/BjornFJohansson/pydna/network/dependents?package_id=UGFja2FnZS01MjQ2MjYzNQ%3D%3D) + + + +There is an open access paper in BMC Bioinformatics describing pydna: + +[](http://www.biomedcentral.com/1471-2105/16/142/abstract) + +Please reference the above paper: + + +Pereira, F., Azevedo, F., Carvalho, Â., Ribeiro, G. F., Budde, M. W., & Johansson, B. (2015). Pydna: a simulation and documentation tool for DNA assembly strategies using python. BMC Bioinformatics, 16(142), 142. + + +When using pydna. + + + +## Documentation + +Documentation is built using [Sphinx](http://www.sphinx-doc.org/) from [docstrings](https://www.python.org/dev/peps/pep-0257/) +in the code and displayed at readthedocs [](http://pydna.readthedocs.io/?badge=latest) + +The [numpy](www.numpy.org) [docstring format](https://github.com/numpy/numpy/blob/release/doc/HOWTO_DOCUMENT.rst.txt) is used. + + + +## Installation using pip + +Pip is included in recent Python versions and is the +officially [recommended](http://python-packaging-user-guide.readthedocs.org/en/latest) tool. + +Pip installs the minimal installation requirements automatically, but not the optional requirements (see below). + + pip install pydna + +or use the --pre switch to get the latest version of pydna. + + pip install pydna --pre + +for optional functionality do: + + pip install pydna[gel,download,express,gui] + +Remove options inside the square brackets as required, but be sure not to leave spaces as pip will not recognize the options. See below under "Optional dependencies". + +### Windows: + +You should be able to pip install pydna from the Windows terminal as biopython now can be installed with pip as well. + + C:\> pip install pydna + +By default python and pip are not on the PATH. You can re-install Python and select this option during installation, or give the full path for pip. Try something like this, depending on where your copy of Python is installed: + + C:\Python37\Scripts\pip install pydna + + + +## Source Code + +Pydna is developed on [Github](https://github.com/BjornFJohansson/pydna) :octocat:. + + + +## Minimal installation dependencies + +Pydna versions before 1.0.0 were compatible with python 2.7 only. +The list below is the minimal requirements for installing pydna. +Biopython has c-extensions, but the other modules are pure python. + +- [Python 3.8, 3.9, 3.10 or 3.11](http://www.python.org) +- [appdirs >=1.4.4](https://pypi.python.org/pypi/appdirs) +- [biopython >= 1.80](http://pypi.python.org/pypi/biopython) +- [networkx >=2.8.8](http://pypi.python.org/pypi/networkx) +- [prettytable >=3.5.0](https://pypi.python.org/pypi/PrettyTable) +- [pyperclip >=1.8.2](https://pypi.python.org/pypi/PrettyTable) +- [pyfiglet >=0.8.post1](https://pypi.python.org/pypi/PrettyTable) + + +## Optional dependencies + +If the modules listed below in the first column are installed, they will provide the functionality listed in the second column. + +| Dependency | Function in pydna | +|-------------------------------------------------------------|--------------------------------------------------------| +| [scipy >=1.8.0](https://www.scipy.org) | gel simulation with pydna.gel | +| [matplotlib >=3.4.3](http://matplotlib.org) | “ | +| [pillow >=8.4.0](https://github.com/python-pillow/Pillow) | “ | +| [numpy](http://www.numpy.org) | " | +| [pyparsing >=2.4.7](https://pypi.python.org/pypi/pyparsing) | fix corrupt Genbank files with pydna.genbankfixer | +| [requests >=2.26.0](https://pypi.org/project/requests) | download sequences with pydna.download | +| [cai2 >=1.0.5](https://pypi.python.org/pypi/cai2) | codon adaptation index calculations in several modules | +| [pyqt5 >=5.15.0](https://pypi.python.org/pypi/pyqt5) | codon adaptation index calculations in several modules | + + +## Requirements for running tests and analyzing code coverage + +- [pytest](https://pypi.org/project/pytest) +- [pytest-cov](https://pypi.org/project/pytest-cov) +- [pytest-doctestplus](https://pypi.org/project/pytest-doctestplus) +- [coverage](https://pypi.org/project/coverage) +- [nbval](https://pypi.org/project/nbval) +- [requests-mock](https://pypi.org/project/requests-mock) + + + +## Releases + +See the [releases](https://github.com/BjornFJohansson/pydna/releases) for changes and releases. + + + +## Automatic testing & Release process + +There are three github actions associated with this package: + +- `pydna_test_and_coverage_workflow.yml` + +The `pydna_test_and_coverage_workflow.yml` is triggered on all pushed non-tagged commits. +This workflow run tests, doctests and a series of Jupyter notebooks using pytest. + +The two other workflows build a setuptools wheel and packages for different Python versions +on Linux, Windows and macOS. + +These are triggered by publishing a github release manually from the github interface. + + + +## Building a PyPI package with [Poetry](https://pypi.org/project/poetry) + +1. Commit changes to git +2. Tag the commit according to the [Semantic Versioning](https://semver.org) format, for example "v2.0.1a3". Do not forget the "v" or poetry will not recognize the tag. + + git tag v2.0.1a3 + +3. Pydna uses the poetry [poetry-dynamic-versioning](https://pypi.org/project/poetry-dynamic-versioning) plugin. + + poetry dynamic-versioning # This sets the version number in the source files + +4. Verify the version + + poetry version + +5. Build package: + + poetry build # run this command in the root directory where the pyproject.toml file is located + +6. Verify the filename of the files in the dist/ folder, they should match + +7. Publish to pypi + + poetry publish + + + +## History + +Pydna was made public in 2012 on [Google code](https://code.google.com/archive/p/pydna). + + +:microbe: + + +:portugal: + + + +%package -n python3-pydna +Summary: Representing double stranded DNA and functions for simulating cloning and homologous recombination between DNA molecules. +Provides: python-pydna +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pydna +#  pydna + +| [](https://github.com/BjornFJohansson/pydna/actions?query=workflow%3A%22Tests+%26+Coverage%22) |[](https://codecov.io/gh/BjornFJohansson/pydna/branch/master) | [](https://badge.fury.io/py/pydna) |[](https://anaconda.org/bjornfjohansson/pydna) | [](https://groups.google.com/g/pydna) | +|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| +| [](http://pydna.readthedocs.io/?badge=latest) |[](https://github.com/BjornFJohansson/pydna/issues) | [](https://anaconda.org/bjornfjohansson/pydna) |[](https://github.com/BjornFJohansson/pydna/stargazers) | | + + +Planning genetic constructs with many parts and assembly steps, such as recombinant +metabolic pathways :petri_dish:, are often difficult to **properly** document as is evident from the poor +state of documentation in the scientific literature :radioactive:. + + +The pydna python package provide a human-readable formal descriptions of :dna: cloning and genetic assembly +strategies in Python :snake: which allow for simulation and verification. + + +Pydna can be used as [executable documentation](https://en.wikipedia.org/wiki/Literate_programming) for cloning. + + +A cloning strategy expressed in pydna is **complete**, **unambiguous** and **stable**. + + +Pydna provides simulation of: + +- Restriction digestion +- Ligation +- PCR +- Primer design +- Gibson assembly +- Golden gate assembly +- Homologous recombination +- Gel electrophoresis of DNA with generation of gel images + +Virtually any sub-cloning experiment can be described in pydna, and its execution yield +the sequences of intermediate and final DNA molecules. + +Pydna has been designed with the goal of being understandable for biologists with only some basic understanding of Python. + +Pydna can formalize planning and sharing of cloning strategies and is especially useful for complex or combinatorial +DNA molecule constructions. + + +To get started, we have compiled some [simple examples](https://github.com/MetabolicEngineeringGroupCBMA/pydna-examples#pydna-examples). +For more elaborate use, look at some assembly strategies of D-xylose metabolic pathways [MetabolicEngineeringGroupCBMA/ypk-xylose-pathways](https://github.com/MetabolicEngineeringGroupCBMA/ypk-xylose-pathways#pereira-et-al-2016). + + + + + + + + + +## Usage + +Most pydna functionality is implemented as methods for the double stranded DNA sequence record +classes Dseq and Dseqrecord, which are subclasses of the [Biopython](http://biopython.org/wiki/Main_Page) [Seq](http://biopython.org/wiki/Seq) and [SeqRecord](http://biopython.org/wiki/SeqRecord) classes. + +These classes make cut and paste cloning and PCR very simple: + + >>> from pydna.dseq import Dseq + >>> seq = Dseq("GGATCCAAA","TTTGGATCC",ovhg=0) + >>> seq + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> from Bio.Restriction import BamHI + >>> a,b = seq.cut(BamHI) + >>> a + Dseq(-5) + G + CCTAG + >>> b + Dseq(-8) + GATCCAAA + GTTT + >>> a+b + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> b+a + Dseq(-13) + GATCCAAAG + GTTTCCTAG + >>> b+a+b + Dseq(-17) + GATCCAAAGGATCCAAA + GTTTCCTAGGTTT + >>> b+a+a + Traceback (most recent call last): + File "<stdin>", line 1, in <module> + File "/usr/local/lib/python2.7/dist-packages/pydna/dsdna.py", line 217, in __add__ + raise TypeError("sticky ends not compatible!") + TypeError: sticky ends not compatible! + >>> + +As the example above shows, pydna keeps track of sticky ends. + +Notably, homologous recombination and Gibson assembly between linear DNA fragments +can be easily simulated without any additional information besides the primary sequence of the fragments. + +Gel electrophoresis of DNA fragments can be simulated using the included gel module + + + Jupyter QtConsole 4.7.7 + Python 3.8.5 | packaged by conda-forge | (default, Aug 29 2020, 01:22:49) + Type 'copyright', 'credits' or 'license' for more information + IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help. + + In [1]: from pydna.gel import gel + + In [2]: from pydna.ladders import PennStateLadder + + In [3]: from pydna.dseqrecord import Dseqrecord + + In [4]: gel([PennStateLadder,[Dseqrecord("A"*2000)]]) + Out[4]: + + + + + + +Pydna can be very compact. The eleven lines of Python below simulates the construction of a recombinant plasmid. +DNA sequences are downloaded from Genbank by accession numbers that are guaranteed to be stable over time. + + from pydna.genbank import Genbank + gb = Genbank("myself@email.com") # Tell Genbank who you are! + gene = gb.nucleotide("X06997") # Kluyveromyces lactis LAC12 gene for lactose permease. + from pydna.parsers import parse_primers + primer_f,primer_r = parse_primers(''' >760_KlLAC12_rv (20-mer) + ttaaacagattctgcctctg + + >759_KlLAC12_fw (19-mer) + aaatggcagatcattcgag ''') + from pydna.amplify import pcr + pcr_prod = pcr(primer_f,primer_r, gene) + vector = gb.nucleotide("AJ001614") # pCAPs cloning vector + from Bio.Restriction import EcoRV + lin_vector = vector.linearize(EcoRV) + rec_vec = ( lin_vector + pcr_prod ).looped() + +Pydna can automate the simulation of [sub cloning](http://en.wikipedia.org/wiki/Subcloning) experiments using +python. This is helpful to generate examples for teaching purposes. + +Read the documentation (below) or the [cookbook](https://github.com/BjornFJohansson/pydna/blob/master/docs/cookbook/cookbook.ipynb) with example files +for further information. + +Please post a message in the [google group](https://groups.google.com/d/forum/pydna) +for pydna if you need help or have problems, questions or comments :sos:. + +Feedback & suggestions are very welcome! + + + + +## Who is using pydna? + +Taylor, L. J., & Strebel, K. (2017). +Pyviko: an automated Python tool to design gene knockouts in complex viruses with overlapping genes. +BMC Microbiology, 17(1), 12. +[PubMed](https://www.ncbi.nlm.nih.gov/pubmed/28061810) + + +Wang, Y., Xue, H., Pourcel, C., Du, Y., & Gautheret, D. (2021). +2-kupl: mapping-free variant detection from DNA-seq data of matched samples. +In Cold Spring Harbor Laboratory (p. 2021.01.17.427048). [DOI](https://doi.org/10.1101/2021.01.17.427048) +[PubMed](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8180056) + + +[An Automated Protein Synthesis Pipeline with Transcriptic and Snakemake](http://blog.booleanbiotech.com/transcriptic_protein_synthesis_pipeline.html) + + +and other projects on [github](https://github.com/BjornFJohansson/pydna/network/dependents?package_id=UGFja2FnZS01MjQ2MjYzNQ%3D%3D) + + + +There is an open access paper in BMC Bioinformatics describing pydna: + +[](http://www.biomedcentral.com/1471-2105/16/142/abstract) + +Please reference the above paper: + + +Pereira, F., Azevedo, F., Carvalho, Â., Ribeiro, G. F., Budde, M. W., & Johansson, B. (2015). Pydna: a simulation and documentation tool for DNA assembly strategies using python. BMC Bioinformatics, 16(142), 142. + + +When using pydna. + + + +## Documentation + +Documentation is built using [Sphinx](http://www.sphinx-doc.org/) from [docstrings](https://www.python.org/dev/peps/pep-0257/) +in the code and displayed at readthedocs [](http://pydna.readthedocs.io/?badge=latest) + +The [numpy](www.numpy.org) [docstring format](https://github.com/numpy/numpy/blob/release/doc/HOWTO_DOCUMENT.rst.txt) is used. + + + +## Installation using pip + +Pip is included in recent Python versions and is the +officially [recommended](http://python-packaging-user-guide.readthedocs.org/en/latest) tool. + +Pip installs the minimal installation requirements automatically, but not the optional requirements (see below). + + pip install pydna + +or use the --pre switch to get the latest version of pydna. + + pip install pydna --pre + +for optional functionality do: + + pip install pydna[gel,download,express,gui] + +Remove options inside the square brackets as required, but be sure not to leave spaces as pip will not recognize the options. See below under "Optional dependencies". + +### Windows: + +You should be able to pip install pydna from the Windows terminal as biopython now can be installed with pip as well. + + C:\> pip install pydna + +By default python and pip are not on the PATH. You can re-install Python and select this option during installation, or give the full path for pip. Try something like this, depending on where your copy of Python is installed: + + C:\Python37\Scripts\pip install pydna + + + +## Source Code + +Pydna is developed on [Github](https://github.com/BjornFJohansson/pydna) :octocat:. + + + +## Minimal installation dependencies + +Pydna versions before 1.0.0 were compatible with python 2.7 only. +The list below is the minimal requirements for installing pydna. +Biopython has c-extensions, but the other modules are pure python. + +- [Python 3.8, 3.9, 3.10 or 3.11](http://www.python.org) +- [appdirs >=1.4.4](https://pypi.python.org/pypi/appdirs) +- [biopython >= 1.80](http://pypi.python.org/pypi/biopython) +- [networkx >=2.8.8](http://pypi.python.org/pypi/networkx) +- [prettytable >=3.5.0](https://pypi.python.org/pypi/PrettyTable) +- [pyperclip >=1.8.2](https://pypi.python.org/pypi/PrettyTable) +- [pyfiglet >=0.8.post1](https://pypi.python.org/pypi/PrettyTable) + + +## Optional dependencies + +If the modules listed below in the first column are installed, they will provide the functionality listed in the second column. + +| Dependency | Function in pydna | +|-------------------------------------------------------------|--------------------------------------------------------| +| [scipy >=1.8.0](https://www.scipy.org) | gel simulation with pydna.gel | +| [matplotlib >=3.4.3](http://matplotlib.org) | “ | +| [pillow >=8.4.0](https://github.com/python-pillow/Pillow) | “ | +| [numpy](http://www.numpy.org) | " | +| [pyparsing >=2.4.7](https://pypi.python.org/pypi/pyparsing) | fix corrupt Genbank files with pydna.genbankfixer | +| [requests >=2.26.0](https://pypi.org/project/requests) | download sequences with pydna.download | +| [cai2 >=1.0.5](https://pypi.python.org/pypi/cai2) | codon adaptation index calculations in several modules | +| [pyqt5 >=5.15.0](https://pypi.python.org/pypi/pyqt5) | codon adaptation index calculations in several modules | + + +## Requirements for running tests and analyzing code coverage + +- [pytest](https://pypi.org/project/pytest) +- [pytest-cov](https://pypi.org/project/pytest-cov) +- [pytest-doctestplus](https://pypi.org/project/pytest-doctestplus) +- [coverage](https://pypi.org/project/coverage) +- [nbval](https://pypi.org/project/nbval) +- [requests-mock](https://pypi.org/project/requests-mock) + + + +## Releases + +See the [releases](https://github.com/BjornFJohansson/pydna/releases) for changes and releases. + + + +## Automatic testing & Release process + +There are three github actions associated with this package: + +- `pydna_test_and_coverage_workflow.yml` + +The `pydna_test_and_coverage_workflow.yml` is triggered on all pushed non-tagged commits. +This workflow run tests, doctests and a series of Jupyter notebooks using pytest. + +The two other workflows build a setuptools wheel and packages for different Python versions +on Linux, Windows and macOS. + +These are triggered by publishing a github release manually from the github interface. + + + +## Building a PyPI package with [Poetry](https://pypi.org/project/poetry) + +1. Commit changes to git +2. Tag the commit according to the [Semantic Versioning](https://semver.org) format, for example "v2.0.1a3". Do not forget the "v" or poetry will not recognize the tag. + + git tag v2.0.1a3 + +3. Pydna uses the poetry [poetry-dynamic-versioning](https://pypi.org/project/poetry-dynamic-versioning) plugin. + + poetry dynamic-versioning # This sets the version number in the source files + +4. Verify the version + + poetry version + +5. Build package: + + poetry build # run this command in the root directory where the pyproject.toml file is located + +6. Verify the filename of the files in the dist/ folder, they should match + +7. Publish to pypi + + poetry publish + + + +## History + +Pydna was made public in 2012 on [Google code](https://code.google.com/archive/p/pydna). + + +:microbe: + + +:portugal: + + + +%package help +Summary: Development documents and examples for pydna +Provides: python3-pydna-doc +%description help +#  pydna + +| [](https://github.com/BjornFJohansson/pydna/actions?query=workflow%3A%22Tests+%26+Coverage%22) |[](https://codecov.io/gh/BjornFJohansson/pydna/branch/master) | [](https://badge.fury.io/py/pydna) |[](https://anaconda.org/bjornfjohansson/pydna) | [](https://groups.google.com/g/pydna) | +|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------| +| [](http://pydna.readthedocs.io/?badge=latest) |[](https://github.com/BjornFJohansson/pydna/issues) | [](https://anaconda.org/bjornfjohansson/pydna) |[](https://github.com/BjornFJohansson/pydna/stargazers) | | + + +Planning genetic constructs with many parts and assembly steps, such as recombinant +metabolic pathways :petri_dish:, are often difficult to **properly** document as is evident from the poor +state of documentation in the scientific literature :radioactive:. + + +The pydna python package provide a human-readable formal descriptions of :dna: cloning and genetic assembly +strategies in Python :snake: which allow for simulation and verification. + + +Pydna can be used as [executable documentation](https://en.wikipedia.org/wiki/Literate_programming) for cloning. + + +A cloning strategy expressed in pydna is **complete**, **unambiguous** and **stable**. + + +Pydna provides simulation of: + +- Restriction digestion +- Ligation +- PCR +- Primer design +- Gibson assembly +- Golden gate assembly +- Homologous recombination +- Gel electrophoresis of DNA with generation of gel images + +Virtually any sub-cloning experiment can be described in pydna, and its execution yield +the sequences of intermediate and final DNA molecules. + +Pydna has been designed with the goal of being understandable for biologists with only some basic understanding of Python. + +Pydna can formalize planning and sharing of cloning strategies and is especially useful for complex or combinatorial +DNA molecule constructions. + + +To get started, we have compiled some [simple examples](https://github.com/MetabolicEngineeringGroupCBMA/pydna-examples#pydna-examples). +For more elaborate use, look at some assembly strategies of D-xylose metabolic pathways [MetabolicEngineeringGroupCBMA/ypk-xylose-pathways](https://github.com/MetabolicEngineeringGroupCBMA/ypk-xylose-pathways#pereira-et-al-2016). + + + + + + + + + +## Usage + +Most pydna functionality is implemented as methods for the double stranded DNA sequence record +classes Dseq and Dseqrecord, which are subclasses of the [Biopython](http://biopython.org/wiki/Main_Page) [Seq](http://biopython.org/wiki/Seq) and [SeqRecord](http://biopython.org/wiki/SeqRecord) classes. + +These classes make cut and paste cloning and PCR very simple: + + >>> from pydna.dseq import Dseq + >>> seq = Dseq("GGATCCAAA","TTTGGATCC",ovhg=0) + >>> seq + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> from Bio.Restriction import BamHI + >>> a,b = seq.cut(BamHI) + >>> a + Dseq(-5) + G + CCTAG + >>> b + Dseq(-8) + GATCCAAA + GTTT + >>> a+b + Dseq(-9) + GGATCCAAA + CCTAGGTTT + >>> b+a + Dseq(-13) + GATCCAAAG + GTTTCCTAG + >>> b+a+b + Dseq(-17) + GATCCAAAGGATCCAAA + GTTTCCTAGGTTT + >>> b+a+a + Traceback (most recent call last): + File "<stdin>", line 1, in <module> + File "/usr/local/lib/python2.7/dist-packages/pydna/dsdna.py", line 217, in __add__ + raise TypeError("sticky ends not compatible!") + TypeError: sticky ends not compatible! + >>> + +As the example above shows, pydna keeps track of sticky ends. + +Notably, homologous recombination and Gibson assembly between linear DNA fragments +can be easily simulated without any additional information besides the primary sequence of the fragments. + +Gel electrophoresis of DNA fragments can be simulated using the included gel module + + + Jupyter QtConsole 4.7.7 + Python 3.8.5 | packaged by conda-forge | (default, Aug 29 2020, 01:22:49) + Type 'copyright', 'credits' or 'license' for more information + IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help. + + In [1]: from pydna.gel import gel + + In [2]: from pydna.ladders import PennStateLadder + + In [3]: from pydna.dseqrecord import Dseqrecord + + In [4]: gel([PennStateLadder,[Dseqrecord("A"*2000)]]) + Out[4]: + + + + + + +Pydna can be very compact. The eleven lines of Python below simulates the construction of a recombinant plasmid. +DNA sequences are downloaded from Genbank by accession numbers that are guaranteed to be stable over time. + + from pydna.genbank import Genbank + gb = Genbank("myself@email.com") # Tell Genbank who you are! + gene = gb.nucleotide("X06997") # Kluyveromyces lactis LAC12 gene for lactose permease. + from pydna.parsers import parse_primers + primer_f,primer_r = parse_primers(''' >760_KlLAC12_rv (20-mer) + ttaaacagattctgcctctg + + >759_KlLAC12_fw (19-mer) + aaatggcagatcattcgag ''') + from pydna.amplify import pcr + pcr_prod = pcr(primer_f,primer_r, gene) + vector = gb.nucleotide("AJ001614") # pCAPs cloning vector + from Bio.Restriction import EcoRV + lin_vector = vector.linearize(EcoRV) + rec_vec = ( lin_vector + pcr_prod ).looped() + +Pydna can automate the simulation of [sub cloning](http://en.wikipedia.org/wiki/Subcloning) experiments using +python. This is helpful to generate examples for teaching purposes. + +Read the documentation (below) or the [cookbook](https://github.com/BjornFJohansson/pydna/blob/master/docs/cookbook/cookbook.ipynb) with example files +for further information. + +Please post a message in the [google group](https://groups.google.com/d/forum/pydna) +for pydna if you need help or have problems, questions or comments :sos:. + +Feedback & suggestions are very welcome! + + + + +## Who is using pydna? + +Taylor, L. J., & Strebel, K. (2017). +Pyviko: an automated Python tool to design gene knockouts in complex viruses with overlapping genes. +BMC Microbiology, 17(1), 12. +[PubMed](https://www.ncbi.nlm.nih.gov/pubmed/28061810) + + +Wang, Y., Xue, H., Pourcel, C., Du, Y., & Gautheret, D. (2021). +2-kupl: mapping-free variant detection from DNA-seq data of matched samples. +In Cold Spring Harbor Laboratory (p. 2021.01.17.427048). [DOI](https://doi.org/10.1101/2021.01.17.427048) +[PubMed](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8180056) + + +[An Automated Protein Synthesis Pipeline with Transcriptic and Snakemake](http://blog.booleanbiotech.com/transcriptic_protein_synthesis_pipeline.html) + + +and other projects on [github](https://github.com/BjornFJohansson/pydna/network/dependents?package_id=UGFja2FnZS01MjQ2MjYzNQ%3D%3D) + + + +There is an open access paper in BMC Bioinformatics describing pydna: + +[](http://www.biomedcentral.com/1471-2105/16/142/abstract) + +Please reference the above paper: + + +Pereira, F., Azevedo, F., Carvalho, Â., Ribeiro, G. F., Budde, M. W., & Johansson, B. (2015). Pydna: a simulation and documentation tool for DNA assembly strategies using python. BMC Bioinformatics, 16(142), 142. + + +When using pydna. + + + +## Documentation + +Documentation is built using [Sphinx](http://www.sphinx-doc.org/) from [docstrings](https://www.python.org/dev/peps/pep-0257/) +in the code and displayed at readthedocs [](http://pydna.readthedocs.io/?badge=latest) + +The [numpy](www.numpy.org) [docstring format](https://github.com/numpy/numpy/blob/release/doc/HOWTO_DOCUMENT.rst.txt) is used. + + + +## Installation using pip + +Pip is included in recent Python versions and is the +officially [recommended](http://python-packaging-user-guide.readthedocs.org/en/latest) tool. + +Pip installs the minimal installation requirements automatically, but not the optional requirements (see below). + + pip install pydna + +or use the --pre switch to get the latest version of pydna. + + pip install pydna --pre + +for optional functionality do: + + pip install pydna[gel,download,express,gui] + +Remove options inside the square brackets as required, but be sure not to leave spaces as pip will not recognize the options. See below under "Optional dependencies". + +### Windows: + +You should be able to pip install pydna from the Windows terminal as biopython now can be installed with pip as well. + + C:\> pip install pydna + +By default python and pip are not on the PATH. You can re-install Python and select this option during installation, or give the full path for pip. Try something like this, depending on where your copy of Python is installed: + + C:\Python37\Scripts\pip install pydna + + + +## Source Code + +Pydna is developed on [Github](https://github.com/BjornFJohansson/pydna) :octocat:. + + + +## Minimal installation dependencies + +Pydna versions before 1.0.0 were compatible with python 2.7 only. +The list below is the minimal requirements for installing pydna. +Biopython has c-extensions, but the other modules are pure python. + +- [Python 3.8, 3.9, 3.10 or 3.11](http://www.python.org) +- [appdirs >=1.4.4](https://pypi.python.org/pypi/appdirs) +- [biopython >= 1.80](http://pypi.python.org/pypi/biopython) +- [networkx >=2.8.8](http://pypi.python.org/pypi/networkx) +- [prettytable >=3.5.0](https://pypi.python.org/pypi/PrettyTable) +- [pyperclip >=1.8.2](https://pypi.python.org/pypi/PrettyTable) +- [pyfiglet >=0.8.post1](https://pypi.python.org/pypi/PrettyTable) + + +## Optional dependencies + +If the modules listed below in the first column are installed, they will provide the functionality listed in the second column. + +| Dependency | Function in pydna | +|-------------------------------------------------------------|--------------------------------------------------------| +| [scipy >=1.8.0](https://www.scipy.org) | gel simulation with pydna.gel | +| [matplotlib >=3.4.3](http://matplotlib.org) | “ | +| [pillow >=8.4.0](https://github.com/python-pillow/Pillow) | “ | +| [numpy](http://www.numpy.org) | " | +| [pyparsing >=2.4.7](https://pypi.python.org/pypi/pyparsing) | fix corrupt Genbank files with pydna.genbankfixer | +| [requests >=2.26.0](https://pypi.org/project/requests) | download sequences with pydna.download | +| [cai2 >=1.0.5](https://pypi.python.org/pypi/cai2) | codon adaptation index calculations in several modules | +| [pyqt5 >=5.15.0](https://pypi.python.org/pypi/pyqt5) | codon adaptation index calculations in several modules | + + +## Requirements for running tests and analyzing code coverage + +- [pytest](https://pypi.org/project/pytest) +- [pytest-cov](https://pypi.org/project/pytest-cov) +- [pytest-doctestplus](https://pypi.org/project/pytest-doctestplus) +- [coverage](https://pypi.org/project/coverage) +- [nbval](https://pypi.org/project/nbval) +- [requests-mock](https://pypi.org/project/requests-mock) + + + +## Releases + +See the [releases](https://github.com/BjornFJohansson/pydna/releases) for changes and releases. + + + +## Automatic testing & Release process + +There are three github actions associated with this package: + +- `pydna_test_and_coverage_workflow.yml` + +The `pydna_test_and_coverage_workflow.yml` is triggered on all pushed non-tagged commits. +This workflow run tests, doctests and a series of Jupyter notebooks using pytest. + +The two other workflows build a setuptools wheel and packages for different Python versions +on Linux, Windows and macOS. + +These are triggered by publishing a github release manually from the github interface. + + + +## Building a PyPI package with [Poetry](https://pypi.org/project/poetry) + +1. Commit changes to git +2. Tag the commit according to the [Semantic Versioning](https://semver.org) format, for example "v2.0.1a3". Do not forget the "v" or poetry will not recognize the tag. + + git tag v2.0.1a3 + +3. Pydna uses the poetry [poetry-dynamic-versioning](https://pypi.org/project/poetry-dynamic-versioning) plugin. + + poetry dynamic-versioning # This sets the version number in the source files + +4. Verify the version + + poetry version + +5. Build package: + + poetry build # run this command in the root directory where the pyproject.toml file is located + +6. Verify the filename of the files in the dist/ folder, they should match + +7. Publish to pypi + + poetry publish + + + +## History + +Pydna was made public in 2012 on [Google code](https://code.google.com/archive/p/pydna). + + +:microbe: + + +:portugal: + + + +%prep +%autosetup -n pydna-5.2.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pydna -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Wed May 10 2023 Python_Bot <Python_Bot@openeuler.org> - 5.2.0-1 +- Package Spec generated |