From 2d3540691cac02baae817222e6662ab07d410074 Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:49:52 +0300 Subject: [PATCH 1/5] adding dna enhancements --- strings/dna.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/strings/dna.py b/strings/dna.py index 46e271d689db..86b08acbc4ae 100644 --- a/strings/dna.py +++ b/strings/dna.py @@ -1,25 +1,29 @@ import re -def dna(dna: str) -> str: +def dna_matching_strand (dna: str) -> str: """ https://en.wikipedia.org/wiki/DNA Returns the second side of a DNA strand - >>> dna("GCTA") + >>> dna_matching_strand("GCTA") 'CGAT' - >>> dna("ATGC") + >>> dna_matching_strand("ATGC") 'TACG' - >>> dna("CTGA") + >>> dna_matching_strand("CTGA") 'GACT' - >>> dna("GFGG") - 'Invalid Strand' + >>> dna_matching_strand("GFGG") + Traceback (most recent call last): + Exception: Invalid Strand """ r = len(re.findall("[ATCG]", dna)) != len(dna) val = dna.translate(dna.maketrans("ATCG", "TAGC")) - return "Invalid Strand" if r else val + if r: + raise Exception("Invalid Strand") + else: + return val if __name__ == "__main__": From d227ad62d288de2334e7868a49c934d2c1e8717c Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:52:14 +0300 Subject: [PATCH 2/5] adding dna enhancements --- strings/dna.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/strings/dna.py b/strings/dna.py index 86b08acbc4ae..3da932e9d787 100644 --- a/strings/dna.py +++ b/strings/dna.py @@ -18,12 +18,12 @@ def dna_matching_strand (dna: str) -> str: Exception: Invalid Strand """ - r = len(re.findall("[ATCG]", dna)) != len(dna) - val = dna.translate(dna.maketrans("ATCG", "TAGC")) - if r: + is_strand = len(re.findall("[ATCG]", dna)) != len(dna) + strand = dna.translate(dna.maketrans("ATCG", "TAGC")) + if is_strand: raise Exception("Invalid Strand") else: - return val + return strand if __name__ == "__main__": From 9f55ec4b865c70030b660630ac07fbb3bc73d6a1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 15:15:42 +0000 Subject: [PATCH 3/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- strings/dna.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/strings/dna.py b/strings/dna.py index 3da932e9d787..ccc364945db2 100644 --- a/strings/dna.py +++ b/strings/dna.py @@ -1,7 +1,7 @@ import re -def dna_matching_strand (dna: str) -> str: +def dna_matching_strand(dna: str) -> str: """ https://en.wikipedia.org/wiki/DNA @@ -21,9 +21,9 @@ def dna_matching_strand (dna: str) -> str: is_strand = len(re.findall("[ATCG]", dna)) != len(dna) strand = dna.translate(dna.maketrans("ATCG", "TAGC")) if is_strand: - raise Exception("Invalid Strand") + raise Exception("Invalid Strand") else: - return strand + return strand if __name__ == "__main__": From 768a54c41660b083bae03d98f2e184c9a2e125c3 Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Sat, 8 Oct 2022 15:10:18 +0300 Subject: [PATCH 4/5] following recommendations --- strings/dna.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/strings/dna.py b/strings/dna.py index 3da932e9d787..25088678a163 100644 --- a/strings/dna.py +++ b/strings/dna.py @@ -1,7 +1,7 @@ import re -def dna_matching_strand (dna: str) -> str: +def dna_matching_strand(dna: str) -> str: """ https://en.wikipedia.org/wiki/DNA @@ -18,12 +18,12 @@ def dna_matching_strand (dna: str) -> str: Exception: Invalid Strand """ - is_strand = len(re.findall("[ATCG]", dna)) != len(dna) + is_invalid_strand = len(re.findall("[ATCG]", dna)) != len(dna) strand = dna.translate(dna.maketrans("ATCG", "TAGC")) - if is_strand: - raise Exception("Invalid Strand") + if is_invalid_strand: + raise Exception("Invalid Strand") else: - return strand + return strand if __name__ == "__main__": From 650993d14766bd3bd3d66342ea6584699be377a7 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 30 Oct 2022 12:30:09 +0100 Subject: [PATCH 5/5] Update and rename dna.py to dna_matching_strand.py --- strings/{dna.py => dna_matching_strand.py} | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) rename strings/{dna.py => dna_matching_strand.py} (56%) diff --git a/strings/dna.py b/strings/dna_matching_strand.py similarity index 56% rename from strings/dna.py rename to strings/dna_matching_strand.py index 25088678a163..6de07b202073 100644 --- a/strings/dna.py +++ b/strings/dna_matching_strand.py @@ -1,8 +1,4 @@ -import re - - def dna_matching_strand(dna: str) -> str: - """ https://en.wikipedia.org/wiki/DNA Returns the second side of a DNA strand @@ -15,16 +11,16 @@ def dna_matching_strand(dna: str) -> str: 'GACT' >>> dna_matching_strand("GFGG") Traceback (most recent call last): - Exception: Invalid Strand + ... + ValueError: GFGG is not a valid strand of DNA """ - - is_invalid_strand = len(re.findall("[ATCG]", dna)) != len(dna) - strand = dna.translate(dna.maketrans("ATCG", "TAGC")) - if is_invalid_strand: - raise Exception("Invalid Strand") - else: - return strand + dna = dna.upper() + if not all(c in "ATGC" for c in dna): + raise ValueError(f"{dna} is not a valid strand of DNA") + return dna.translate(str.maketrans("ATGC", "TACG")) if __name__ == "__main__": - __import__("doctest").testmod() + import doctest + + doctest.testmod()