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 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.6"
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.rc())
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.rc()))
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
2653
+ ||
2653
2654
  >>> strand2
2654
2655
  Dseq(-2)
2655
2656
  gt
2656
- <BLANKLINE>
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
- <BLANKLINE>
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
- <BLANKLINE>
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(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: SeqRecord):
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.6
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,<2025.0.0)
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=4u9wd3RbQkivNRKpEGXHT7Lrk7W7G5V64PJLOiSXKAk,7086
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=WmzygtYKLONRoccaqHM5O3xjbNzaSeOHR15EH-tVOmk,108764
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=cZN1Micwlgt8L73WjaIUlblb9KuQBxLzhM91cd5ijKo,83324
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=aQtkx8Wjy_FbnD2_uVY--ULuWwLtxiVeQ0wlsZs2OXA,22816
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.6.dist-info/METADATA,sha256=jUQ1ZJ5NYSJe71DHPnRWDYF1_pUeWqoMeOcLvYjitFE,24626
40
- pydna-5.5.6.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
41
- pydna-5.5.6.dist-info/licenses/LICENSE.txt,sha256=u8QfcsnNXZM0UCexerK_MvyA2lPWgeGyUtSYXvLG6Oc,6119
42
- pydna-5.5.6.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.3.0
2
+ Generator: poetry-core 2.3.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any