From 03a66c90ae9c618f6a2ed8bb2590af867c682659 Mon Sep 17 00:00:00 2001 From: Piotr Date: Tue, 9 Sep 2014 21:12:39 +0200 Subject: [PATCH 1/3] [#62] Added functions for gc content --- src/shmir/designer/validators.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/shmir/designer/validators.py b/src/shmir/designer/validators.py index 0ffa1c7..02b094c 100644 --- a/src/shmir/designer/validators.py +++ b/src/shmir/designer/validators.py @@ -130,3 +130,15 @@ def check_input(seq_to_be_check): return check_complementary(ch_seq1[0], ch_seq2[0]) else: raise errors.InputException('{}'.format(errors.error)) + + +def calculate_gc_content(sequence): + sequence = sequence.upper() + g_count = sequence.count('G') + c_count = sequence.count('C') + + return int((float(g_count + c_count) / len(sequence)) * 100) + + +def validate_gc_content(sequence, min_percent, max_percent): + return min_percent <= calculate_gc_content(sequence) <= max_percent From e7539ec2dc28faa1f5ca8bd0b06cc5fa9a6c086e Mon Sep 17 00:00:00 2001 From: Piotr Date: Sun, 21 Sep 2014 18:15:31 +0200 Subject: [PATCH 2/3] [#62] Added tests for functions --- src/shmir/tests/test_validators.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/shmir/tests/test_validators.py diff --git a/src/shmir/tests/test_validators.py b/src/shmir/tests/test_validators.py new file mode 100644 index 0000000..d4a3261 --- /dev/null +++ b/src/shmir/tests/test_validators.py @@ -0,0 +1,27 @@ +import unittest + +from designer.validators import ( + calculate_gc_content, + validate_gc_content, +) + + +class TestValidators(unittest.TestCase): + + def test_calculate_gc_content(self): + seq_percent = calculate_gc_content('ACGT') + self.assertEqual(seq_percent, 50) + + seq_percent = calculate_gc_content('CCCCGGGG') + self.assertEqual(seq_percent, 100) + + seq_percent = calculate_gc_content('ACTTTTTTTA') + self.assertEqual(seq_percent, 10) + + def test_validate_gc_content(self): + is_in_range = validate_gc_content('ACGT', 40, 60) + self.assertTrue(is_in_range) + + def test_validate_gc_content_not_in_range(self): + not_in_range = validate_gc_content('ACGT', 52, 70) + self.assertFalse(not_in_range) From 583e0e8e149f3fa3e91b7ffbf4685b4e6f5bb660 Mon Sep 17 00:00:00 2001 From: Piotr Date: Wed, 24 Sep 2014 22:56:47 +0200 Subject: [PATCH 3/3] [#62] Fixed import errors --- src/shmir/data/ncbi_api.py | 4 ++-- src/shmir/tests/test_ncbi_api.py | 4 ++-- src/shmir/tests/test_validators.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/shmir/data/ncbi_api.py b/src/shmir/data/ncbi_api.py index 212fb29..5c95100 100644 --- a/src/shmir/data/ncbi_api.py +++ b/src/shmir/data/ncbi_api.py @@ -6,8 +6,8 @@ import re from Bio import Entrez -from designer import errors -import settings +from shmir.designer import errors +from shmir import settings def get_data( diff --git a/src/shmir/tests/test_ncbi_api.py b/src/shmir/tests/test_ncbi_api.py index 3d11fe4..bd7568f 100644 --- a/src/shmir/tests/test_ncbi_api.py +++ b/src/shmir/tests/test_ncbi_api.py @@ -6,8 +6,8 @@ patch ) -from data import ncbi_api -from designer import errors +from shmir.data import ncbi_api +from shmir.designer import errors class TestGetDataFromNcbi(unittest.TestCase): diff --git a/src/shmir/tests/test_validators.py b/src/shmir/tests/test_validators.py index d4a3261..5e3631c 100644 --- a/src/shmir/tests/test_validators.py +++ b/src/shmir/tests/test_validators.py @@ -1,6 +1,6 @@ import unittest -from designer.validators import ( +from shmir.designer.validators import ( calculate_gc_content, validate_gc_content, )