def test_variant_filters_from_request(self): filters = [ ('filter', 'in_dbsnp'), ('filter', 'quality<=1000'), ('filter', 'aaf_1kg_all<=0.5'), ('filter', 'aaf_max_all>0.4'), ] expected = [ DbsnpFilter(name='in_dbsnp', op='=', val='1'), QualityFilter(name='quality', op='<=', val='1000'), ContinuousFilter(name='aaf_1kg_all', op='<=', val='0.5'), ContinuousFilter(name='aaf_max_all', op='>', val='0.4'), ] request = RequestFactory().get('', filters) fc = variant_filters_from_request(request, db='test') self.assertIsInstance(fc, FiltersCollection) self.assertTrue(len(fc) == len(filters)) def check(ff, expect): self.assertEqual(ff.val, expect.val) self.assertEqual(ff.name, expect.name) self.assertEqual(ff.op, expect.op) for f in expected: check(fc[f.name], f)
def test_genotypes_filter_from_request_with_default_ss(self): """With no samples selection given, makes them from PED phenotype.""" request = RequestFactory().get('', [('filter', 'genotype=dominant')]) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterDominant) self.assertEqual(sorted(gf.ss.groups.keys()), ['affected','not_affected'])
def __init__(self, request, db): """Extract filters etc. information from http request.""" self.db = db self.sort = sort_from_request(request) self.pg = pagination_from_request(request) self.ss = samples_selection_from_request(request, db) self.fc = variant_filters_from_request(request, db, self.ss) self.stats = stats_service(db)
def test_genotypes_filter_from_request_with_default_ss(self): """With no samples selection given, makes them from PED phenotype.""" request = RequestFactory().get('', [('filter', 'genotype=dominant')]) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterDominant) self.assertEqual(sorted(gf.ss.groups.keys()), ['affected', 'not_affected'])
def __init__(self, request, db): """Extract filters etc. information from http request.""" self.db = db self.sort = sort_from_request(request) self.pg = pagination_from_request(request) self.ss = samples_selection_from_request(request, db) self.fc = variant_filters_from_request(request, db, self.ss) self.stats = stats_service(db)
def test_genotypes_Active_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'group1=09818,09819')] filters = [('filter', 'genotype=active')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterActive) var = gf.apply(self.variants).variants # no need for self.genotypes, it will be created on the fly for v in var: gts = self.genotypes[v.pk-1] self.assertTrue(gts[S09818] > 1 or gts[S09819] > 1)
def test_genotypes_Active_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'group1=09818,09819')] filters = [('filter', 'genotype=active')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterActive) var = gf.apply( self.variants ).variants # no need for self.genotypes, it will be created on the fly for v in var: gts = self.genotypes[v.pk - 1] self.assertTrue(gts[S09818] > 1 or gts[S09819] > 1)
def test_genotypes_Nothing_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'A=09818,09819'), ('samples', 'B=09960,09961')] filters = [('filter', 'genotype=nothing')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') self.assertIsInstance(fc, FiltersCollection) self.assertTrue(len(fc) == len(filters)) gf = fc['genotype'] self.assertEqual(sorted(gf.ss.groups.keys()), ['A', 'B']) self.assertEqual(gf.name, 'genotype') self.assertEqual(gf.val, 'nothing') self.assertEqual(gf.op, '=') self.assertIsInstance(gf, GenotypesFilterDoNothing)
def test_genotypes_Nothing_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'A=09818,09819'), ('samples', 'B=09960,09961')] filters = [('filter', 'genotype=nothing')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') self.assertIsInstance(fc, FiltersCollection) self.assertTrue(len(fc) == len(filters)) gf = fc['genotype'] self.assertEqual(sorted(gf.ss.groups.keys()), ['A','B']) self.assertEqual(gf.name, 'genotype') self.assertEqual(gf.val, 'nothing') self.assertEqual(gf.op, '=') self.assertIsInstance(gf, GenotypesFilterDoNothing)
def test_genotypes_Dominant_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'not_affected=09960,09961'), ('samples', 'affected=09818,09819')] filters = [('filter', 'genotype=dominant')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterDominant) var = gf.apply(self.variants).variants for v in var: gts = self.genotypes[v.pk - 1] self.assertGreater(gts[S09818], 1) self.assertGreater(gts[S09819], 1) self.assertEqual(gts[S09960], 1) self.assertEqual(gts[S09961], 1)
def test_genotypes_Dominant_filter_from_request_with_ss_from_request(self): """With a sound grouping passed by url.""" samples = [('samples', 'not_affected=09960,09961'), ('samples', 'affected=09818,09819')] filters = [('filter', 'genotype=dominant')] request = RequestFactory().get('', samples + filters) fc = variant_filters_from_request(request, db='test') gf = fc['genotype'] self.assertIsInstance(gf, GenotypesFilterDominant) var = gf.apply(self.variants).variants for v in var: gts = self.genotypes[v.pk-1] self.assertGreater(gts[S09818], 1) self.assertGreater(gts[S09819], 1) self.assertEqual(gts[S09960], 1) self.assertEqual(gts[S09961], 1)
def test_variant_filters_from_request(self): filters = [('filter', 'in_dbsnp'), ('filter', 'quality<=1000'), ('filter', 'aaf_1kg_all<=0.5'), ('filter', 'aaf_max_all>0.4'), ] expected = [DbsnpFilter(name='in_dbsnp', op='=', val='1'), QualityFilter(name='quality', op='<=', val='1000'), ContinuousFilter(name='aaf_1kg_all', op='<=', val='0.5'), ContinuousFilter(name='aaf_max_all', op='>', val='0.4'), ] request = RequestFactory().get('', filters) fc = variant_filters_from_request(request, db='test') self.assertIsInstance(fc, FiltersCollection) self.assertTrue(len(fc) == len(filters)) def check(ff, expect): self.assertEqual(ff.val, expect.val) self.assertEqual(ff.name, expect.name) self.assertEqual(ff.op, expect.op) for f in expected: check(fc[f.name], f)