pydna 5.5.6__py3-none-any.whl → 5.5.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pydna/__init__.py +1 -1
- pydna/assembly2.py +2 -2
- pydna/dseq.py +15 -14
- pydna/seqrecord.py +3 -3
- {pydna-5.5.6.dist-info → pydna-5.5.7.dist-info}/METADATA +2 -2
- {pydna-5.5.6.dist-info → pydna-5.5.7.dist-info}/RECORD +8 -8
- {pydna-5.5.6.dist-info → pydna-5.5.7.dist-info}/WHEEL +1 -1
- {pydna-5.5.6.dist-info → pydna-5.5.7.dist-info}/licenses/LICENSE.txt +0 -0
pydna/__init__.py
CHANGED
|
@@ -147,7 +147,7 @@ __license__ = "BSD"
|
|
|
147
147
|
__maintainer__ = "Björn Johansson"
|
|
148
148
|
__email__ = "bjorn_johansson@bio.uminho.pt"
|
|
149
149
|
__status__ = "Development" # "Production" #"Prototype"
|
|
150
|
-
__version__ = "5.5.
|
|
150
|
+
__version__ = "5.5.7"
|
|
151
151
|
|
|
152
152
|
|
|
153
153
|
class _PydnaWarning(Warning):
|
pydna/assembly2.py
CHANGED
|
@@ -867,7 +867,7 @@ def assemble(
|
|
|
867
867
|
f_u = fragments[u - 1] if u > 0 else fragments[-u - 1].reverse_complement()
|
|
868
868
|
f_v = fragments[v - 1] if v > 0 else fragments[-v - 1].reverse_complement()
|
|
869
869
|
seq_u = str(loc_u.extract(f_u).seq)
|
|
870
|
-
seq_v = str(loc_v.extract(f_v).seq.
|
|
870
|
+
seq_v = str(loc_v.extract(f_v).seq.reverse_complement())
|
|
871
871
|
# Test if seq_u and seq_v anneal
|
|
872
872
|
if not anneal_strands(seq_u, seq_v):
|
|
873
873
|
raise ValueError("Mismatch in assembly")
|
|
@@ -1946,7 +1946,7 @@ class PCRAssembly(Assembly):
|
|
|
1946
1946
|
results = super().assemble_linear(only_adjacent_edges, max_assemblies)
|
|
1947
1947
|
for result in results:
|
|
1948
1948
|
rp = self.fragments[2]
|
|
1949
|
-
result.seq = result.seq[: -len(rp)] + Dseq(str(rp.seq.
|
|
1949
|
+
result.seq = result.seq[: -len(rp)] + Dseq(str(rp.seq.reverse_complement()))
|
|
1950
1950
|
return results
|
|
1951
1951
|
|
|
1952
1952
|
|
pydna/dseq.py
CHANGED
|
@@ -785,7 +785,7 @@ class Dseq(Seq):
|
|
|
785
785
|
>>> ssobj
|
|
786
786
|
Dseq(-7)
|
|
787
787
|
GATTACA
|
|
788
|
-
|
|
788
|
+
|||||||
|
|
789
789
|
>>> round(ssobj.mw(), 1)
|
|
790
790
|
2184.4
|
|
791
791
|
>>> ds_lin_obj2 = Dseq("GATZFCA")
|
|
@@ -908,7 +908,8 @@ class Dseq(Seq):
|
|
|
908
908
|
w, c = representation_tuple(
|
|
909
909
|
self._data.decode("ascii"), length_limit_for_repr=length_limit_for_repr
|
|
910
910
|
)
|
|
911
|
-
|
|
911
|
+
w = w or "|" * len(c)
|
|
912
|
+
c = c or "|" * len(w)
|
|
912
913
|
return pretty_str(header + "\n" + w + "\n" + c)
|
|
913
914
|
|
|
914
915
|
def reverse_complement(self) -> "Dseq":
|
|
@@ -1574,7 +1575,7 @@ class Dseq(Seq):
|
|
|
1574
1575
|
ctag
|
|
1575
1576
|
>>> ds.nibble_five_prime_left(4)
|
|
1576
1577
|
Dseq(-4)
|
|
1577
|
-
|
|
1578
|
+
||||
|
|
1578
1579
|
ctag
|
|
1579
1580
|
>>> ds = Dseq.from_representation(
|
|
1580
1581
|
... '''
|
|
@@ -1655,7 +1656,7 @@ class Dseq(Seq):
|
|
|
1655
1656
|
>>> ds.nibble_five_prime_right(4)
|
|
1656
1657
|
Dseq(-4)
|
|
1657
1658
|
gatc
|
|
1658
|
-
|
|
1659
|
+
||||
|
|
1659
1660
|
>>> ds = Dseq.from_representation(
|
|
1660
1661
|
... '''
|
|
1661
1662
|
... gatc
|
|
@@ -1724,7 +1725,7 @@ class Dseq(Seq):
|
|
|
1724
1725
|
>>> ds.nibble_three_prime_left(4)
|
|
1725
1726
|
Dseq(-4)
|
|
1726
1727
|
gatc
|
|
1727
|
-
|
|
1728
|
+
||||
|
|
1728
1729
|
>>> ds = Dseq.from_representation(
|
|
1729
1730
|
... '''
|
|
1730
1731
|
... gatc
|
|
@@ -1792,7 +1793,7 @@ class Dseq(Seq):
|
|
|
1792
1793
|
ctag
|
|
1793
1794
|
>>> ds.nibble_three_prime_right(4)
|
|
1794
1795
|
Dseq(-4)
|
|
1795
|
-
|
|
1796
|
+
||||
|
|
1796
1797
|
ctag
|
|
1797
1798
|
>>> ds = Dseq.from_representation(
|
|
1798
1799
|
... '''
|
|
@@ -2583,7 +2584,7 @@ class Dseq(Seq):
|
|
|
2583
2584
|
>>> strands[0]
|
|
2584
2585
|
Dseq(-2)
|
|
2585
2586
|
ta
|
|
2586
|
-
|
|
2587
|
+
||
|
|
2587
2588
|
>>> ds = Dseq("tagaaptapgtatg")
|
|
2588
2589
|
>>> ds
|
|
2589
2590
|
Dseq(-14)
|
|
@@ -2596,7 +2597,7 @@ class Dseq(Seq):
|
|
|
2596
2597
|
atctt catac
|
|
2597
2598
|
>>> strands[0]
|
|
2598
2599
|
Dseq(-2)
|
|
2599
|
-
|
|
2600
|
+
||
|
|
2600
2601
|
at
|
|
2601
2602
|
"""
|
|
2602
2603
|
|
|
@@ -2630,7 +2631,7 @@ class Dseq(Seq):
|
|
|
2630
2631
|
>>> strands[0]
|
|
2631
2632
|
Dseq(-2)
|
|
2632
2633
|
ta
|
|
2633
|
-
|
|
2634
|
+
||
|
|
2634
2635
|
>>> new, strands = ds.shed_ss_dna([],[(6, 8)])
|
|
2635
2636
|
>>> new
|
|
2636
2637
|
Dseq(-14)
|
|
@@ -2638,7 +2639,7 @@ class Dseq(Seq):
|
|
|
2638
2639
|
atcttc ccatac
|
|
2639
2640
|
>>> strands[0]
|
|
2640
2641
|
Dseq(-2)
|
|
2641
|
-
|
|
2642
|
+
||
|
|
2642
2643
|
at
|
|
2643
2644
|
>>> ds = Dseq("tagaagtaggtatg")
|
|
2644
2645
|
>>> new, (strand1, strand2) = ds.shed_ss_dna([(6, 8), (9, 11)],[])
|
|
@@ -2649,11 +2650,11 @@ class Dseq(Seq):
|
|
|
2649
2650
|
>>> strand1
|
|
2650
2651
|
Dseq(-2)
|
|
2651
2652
|
ta
|
|
2652
|
-
|
|
2653
|
+
||
|
|
2653
2654
|
>>> strand2
|
|
2654
2655
|
Dseq(-2)
|
|
2655
2656
|
gt
|
|
2656
|
-
|
|
2657
|
+
||
|
|
2657
2658
|
"""
|
|
2658
2659
|
|
|
2659
2660
|
watson_cutpairs = watson_cutpairs or list()
|
|
@@ -2872,14 +2873,14 @@ class Dseq(Seq):
|
|
|
2872
2873
|
>>> Dseq(parts.sticky_left5)
|
|
2873
2874
|
Dseq(-3)
|
|
2874
2875
|
GGG
|
|
2875
|
-
|
|
2876
|
+
|||
|
|
2876
2877
|
>>> Dseq(parts.middle)
|
|
2877
2878
|
Dseq(-3)
|
|
2878
2879
|
ATC
|
|
2879
2880
|
TAG
|
|
2880
2881
|
>>> Dseq(parts.sticky_right5)
|
|
2881
2882
|
Dseq(-3)
|
|
2882
|
-
|
|
2883
|
+
|||
|
|
2883
2884
|
TCA
|
|
2884
2885
|
|
|
2885
2886
|
Parameters
|
pydna/seqrecord.py
CHANGED
|
@@ -21,7 +21,7 @@ from pydna.seq import ProteinSeq
|
|
|
21
21
|
from pydna.common_sub_strings import common_sub_strings
|
|
22
22
|
|
|
23
23
|
from Bio.Data.CodonTable import TranslationError
|
|
24
|
-
from Bio.SeqRecord import SeqRecord
|
|
24
|
+
from Bio.SeqRecord import SeqRecord as BioSeqRecordSeqRecord
|
|
25
25
|
from Bio.SeqFeature import SimpleLocation
|
|
26
26
|
from Bio.SeqFeature import CompoundLocation
|
|
27
27
|
from pydna.seq import Seq
|
|
@@ -37,7 +37,7 @@ from warnings import warn
|
|
|
37
37
|
import datetime
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
class SeqRecord(
|
|
40
|
+
class SeqRecord(BioSeqRecordSeqRecord):
|
|
41
41
|
"""
|
|
42
42
|
A subclass of the Biopython SeqRecord class.
|
|
43
43
|
|
|
@@ -86,7 +86,7 @@ class SeqRecord(SeqRecord):
|
|
|
86
86
|
self.annotations = {ps(k): ps(v) for k, v in self.annotations.items()}
|
|
87
87
|
|
|
88
88
|
@classmethod
|
|
89
|
-
def from_Bio_SeqRecord(clc, sr:
|
|
89
|
+
def from_Bio_SeqRecord(clc, sr: BioSeqRecordSeqRecord):
|
|
90
90
|
"""Creates a pydnaSeqRecord from a Biopython SeqRecord."""
|
|
91
91
|
# https://stackoverflow.com/questions/15404256/changing-the-\
|
|
92
92
|
# class-of-a-python-object-casting
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pydna
|
|
3
|
-
Version: 5.5.
|
|
3
|
+
Version: 5.5.7
|
|
4
4
|
Summary: Representing double stranded DNA and functions for simulating cloning and homologous recombination between DNA molecules.
|
|
5
5
|
License: BSD
|
|
6
6
|
License-File: LICENSE.txt
|
|
@@ -39,7 +39,7 @@ Requires-Dist: pydivsufsort (>=0.0.14)
|
|
|
39
39
|
Requires-Dist: pyfiglet (==0.8.post1)
|
|
40
40
|
Requires-Dist: pyparsing (>=2.4.7) ; extra == "download"
|
|
41
41
|
Requires-Dist: pyperclip (>=1.8.2) ; extra == "clipboard"
|
|
42
|
-
Requires-Dist: regex (>=2024.11.6,<
|
|
42
|
+
Requires-Dist: regex (>=2024.11.6,<2027.0.0)
|
|
43
43
|
Requires-Dist: requests (>=2.26.0) ; extra == "download"
|
|
44
44
|
Requires-Dist: scipy (>=1.11.3) ; (python_version >= "3.12") and (extra == "gel")
|
|
45
45
|
Requires-Dist: scipy (>=1.9.3) ; (python_version < "3.12") and (extra == "gel")
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
pydna/__init__.py,sha256=
|
|
1
|
+
pydna/__init__.py,sha256=qs2BcxGoPn7Bd9QWHXhpGaFHeKSI8UTjWHkNI1r5PN8,7086
|
|
2
2
|
pydna/_pretty.py,sha256=S3J0z_czeP1HpR-lj5fXQo9OeZc3ONsvxEGAc-Oqvjo,885
|
|
3
3
|
pydna/_thermodynamic_data.py,sha256=ctOCzI0SclCBQVk7tG01bDv76fMeOROrp_WdVG5jp20,10885
|
|
4
4
|
pydna/all.py,sha256=jPeYTAPh5uNXnqsK-HfMFzlVXE6sSqsonHCgmt6lf2I,1502
|
|
@@ -6,14 +6,14 @@ pydna/alphabet.py,sha256=NOWIcsVjdPSR9aAZx5wzWD8061Pq2fOE1qAKfjqDzGg,29654
|
|
|
6
6
|
pydna/amplicon.py,sha256=zql6MVqoKu9XEDlEmqxCQa5oZMDk3pyayP536k-yS38,5135
|
|
7
7
|
pydna/amplify.py,sha256=DsMDJi6bRmP1CMku-jZ1_QXQ3-gbQ_P2M9kHR30zJ-Y,18738
|
|
8
8
|
pydna/assembly.py,sha256=1bAaFZDAEAlz_LB31sjAPRtAkIFK_VIXpMIQpTf_8xU,19291
|
|
9
|
-
pydna/assembly2.py,sha256=
|
|
9
|
+
pydna/assembly2.py,sha256=csvva78OGg9gHKCMdQM-vCR2DW81tkkdCHUcBwYa0mA,108796
|
|
10
10
|
pydna/codon.py,sha256=AZb8DjrS5lBAzNhL32GvE_P9V5DvSBbc7w9TaSeQHlc,2553
|
|
11
11
|
pydna/common_sub_strings.py,sha256=pnSx3OAjwf2uclYxv-90XYZT3bMl_d8ZTDeoGtlgtWs,11467
|
|
12
12
|
pydna/contig.py,sha256=yBF4TMq1pLL0Pe3tefl2sDzNFaeSddBpytN-z-xBeSw,14971
|
|
13
13
|
pydna/cre_lox.py,sha256=sOj9R8_oFPGWs68vc4jf6LqWOXjMsVSwtJaeKl6ZF2M,4476
|
|
14
14
|
pydna/crispr.py,sha256=iwu0Cjskzdb2r-In9633QIxQYKGmSNVOEM_dLK6lC54,3619
|
|
15
15
|
pydna/design.py,sha256=GQTyH4fKsvd6fSel0uC8DNQIulq3HMg-jYHxqsQzoLw,31743
|
|
16
|
-
pydna/dseq.py,sha256=
|
|
16
|
+
pydna/dseq.py,sha256=5qWP7bhpE71OLrfbKRfpdMoSfUZNQRxrje62GbF14LQ,83281
|
|
17
17
|
pydna/dseqrecord.py,sha256=jzo8jr6i4zZ6SdJJfbabdkGh_6U8PI0Ywa9LCdn91XE,49598
|
|
18
18
|
pydna/fakeseq.py,sha256=uxyu1PXF-sVasEqhmyhMcsbpTy84uUtubDiZuxHNb9c,1174
|
|
19
19
|
pydna/fusionpcr.py,sha256=tfIfGGkNoZjg_dodcEx9wTc12aLRnC7J3g-Vg3Jg1uA,2821
|
|
@@ -29,14 +29,14 @@ pydna/primer.py,sha256=s3CoPheB4PUuQJU_11VGEBZW62DesEiWmTC2HHzD7so,2248
|
|
|
29
29
|
pydna/primer_screen.py,sha256=0CodBc9JThE-qkk5Z2DacSYIvSqhsFCGARzh-Bu236U,26418
|
|
30
30
|
pydna/readers.py,sha256=9ZopQFW0CyYCmW4jy-6_w0_0BRUMLV2VAVDmHH4Ns5w,1731
|
|
31
31
|
pydna/seq.py,sha256=H-MPWo2qQG6s5N0LKSziTKmb79ORCCNHofE2Gs0R5U8,10979
|
|
32
|
-
pydna/seqrecord.py,sha256=
|
|
32
|
+
pydna/seqrecord.py,sha256=CXmUncUdZAgGD109m169cRyttoCdFk3sL4FptL-Sb5E,22865
|
|
33
33
|
pydna/sequence_picker.py,sha256=wuRfQhuMgxrK6rrNykBFbRqErk-qXBPRvmEEIM0ji4o,1305
|
|
34
34
|
pydna/sequence_regex.py,sha256=bp0JhUILRlXQ-zOjK6oz-cxjca46LBjA5wCuzga-Hmw,1238
|
|
35
35
|
pydna/threading_timer_decorator_exit.py,sha256=D91kqjKSavWDnXyc1Fo-CwPYtbmR2DjTXnBYSRXKmSA,2793
|
|
36
36
|
pydna/tm.py,sha256=kM31byeBog17xi-NnVL6yXPLyZrzpXRY9J6XfEAJa9I,11083
|
|
37
37
|
pydna/types.py,sha256=W1qY6TSRv1nIj9dxEwTlc4XB3778arSeMg713fPnT9U,1337
|
|
38
38
|
pydna/utils.py,sha256=vYJJnJlaSTVxmbusv-WDNid54nBUqs8pTFDcJG_I7tA,24989
|
|
39
|
-
pydna-5.5.
|
|
40
|
-
pydna-5.5.
|
|
41
|
-
pydna-5.5.
|
|
42
|
-
pydna-5.5.
|
|
39
|
+
pydna-5.5.7.dist-info/METADATA,sha256=aPQuE7KoCUGX1roIMZ_Lxn8ZvWxPMGjujlpRhjuUAZw,24626
|
|
40
|
+
pydna-5.5.7.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
|
|
41
|
+
pydna-5.5.7.dist-info/licenses/LICENSE.txt,sha256=u8QfcsnNXZM0UCexerK_MvyA2lPWgeGyUtSYXvLG6Oc,6119
|
|
42
|
+
pydna-5.5.7.dist-info/RECORD,,
|
|
File without changes
|