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'])
Example #3
0
 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'])
Example #5
0
 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)