示例#1
0
    def test_active_panel(self):
        """
        Make sure GenePanel.active_panel returns correct panel
        """

        gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        gps2 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        gps.panel.active_panel.increment_version()
        gps.panel.active_panel.increment_version()
        gps.panel.active_panel.increment_version()
        gps.panel.active_panel.increment_version()
        gps.panel.active_panel.increment_version()
        gps = gps.panel.active_panel

        assert gps.minor_version == 5

        gp = GenePanel.objects.get(pk=gps.panel.pk)
        assert gp.active_panel == gps

        gps2.panel.active_panel.increment_version()
        del gps2.panel.active_panel
        gps2.panel.active_panel.increment_version()

        del gps2.panel.active_panel
        gps2 = gps2.panel.active_panel

        assert gps2.minor_version == 2
        gp2 = GenePanel.objects.get(pk=gps2.panel.pk)
        assert gp2.active_panel == gps2
示例#2
0
    def test_delete_gene(self):
        gps = GenePanelSnapshotFactory()
        genes = GenePanelEntrySnapshotFactory.create_batch(5, panel=gps)
        gene_symbol = genes[2].gene['gene_symbol']

        number_of_genes = gps.stats.get('number_of_genes')

        assert gps.has_gene(gene_symbol) is True
        gps = gps.panel.active_panel
        gps.delete_gene(gene_symbol)
        gps = gps.panel.active_panel
        assert gps.panel.active_panel.has_gene(gene_symbol) is False
        assert number_of_genes - 1 == gps.panel.active_panel.stats.get(
            'number_of_genes')  # 4 is due to create_batch

        old_gps = GenePanel.objects.get(
            pk=gps.panel.pk).genepanelsnapshot_set.last()
        assert old_gps.version != gps.version
        assert old_gps.has_gene(gene_symbol) is True

        new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel
        assert new_gps.has_gene(gene_symbol) is False

        gene_symbol = genes[3].gene['gene_symbol']
        assert new_gps.has_gene(gene_symbol) is True
        new_gps.delete_gene(gene_symbol, False)
        assert new_gps.has_gene(gene_symbol) is False

        new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel
        assert new_gps.has_gene(gene_symbol) is False
示例#3
0
    def test_import_panel_sources(self):
        gene = GeneFactory(gene_symbol="ABCC5-AS1")
        A1CF = GeneFactory(gene_symbol="A1CF")
        GeneFactory(gene_symbol="STR_1")

        gps = GenePanelSnapshotFactory()
        gps.panel.name = "Panel One"
        gps.level4title.name = gps.panel.name
        gps.level4title.save()
        gps.panel.save()
        evidence = EvidenceFactory.create(name="Expert Review Amber")
        GenePanelEntrySnapshotFactory.create(gene_core=gene,
                                             panel=gps,
                                             evaluation=(None, ),
                                             evidence=(evidence, ))
        self.assertEqual(
            gps.get_gene(gene.gene_symbol).evidence.first().name,
            "Expert Review Amber")

        file_path = os.path.join(os.path.dirname(__file__),
                                 'import_panel_data.tsv')
        test_panel_file = os.path.abspath(file_path)

        with open(test_panel_file) as f:
            url = reverse_lazy('panels:upload_panels')
            self.client.post(url, {'panel_list': f})

        ap = GenePanel.objects.get(name="Panel One").active_panel
        self.assertEqual(
            ap.get_gene(gene.gene_symbol).evidence.first().name,
            "Expert Review Green")
        self.assertEqual(ap.get_gene(gene.gene_symbol).evidence.count(), 1)
        self.assertEqual(sorted(ap.get_gene('A1CF').phenotypes),
                         sorted(['57h', 'wef']))
示例#4
0
    def test_get_panels_for_a_gene(self):
        gene = GeneFactory()

        gps = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps)

        gps = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps)

        gps3 = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps3)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps3)

        gps4 = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps4)  # random genes

        assert GenePanelEntrySnapshot.objects.get_gene_panels(
            gene.gene_symbol).count() == 3

        url = reverse_lazy('panels:entity_detail',
                           kwargs={'slug': gene.gene_symbol})
        res = self.client.get(url)
        assert len(res.context_data['entries']) == 3
示例#5
0
    def test_get_internal_panels_for_a_gene(self):
        gene = GeneFactory()

        gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps)

        gps2 = GenePanelSnapshotFactory(
            panel__status=GenePanel.STATUS.internal)
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps2)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps2)

        gps3 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps3)  # random genes

        self.assertEqual(
            GenePanelEntrySnapshot.objects.get_gene_panels(
                gene.gene_symbol).count(), 2)
        self.assertEqual(
            GenePanelSnapshot.objects.get_gene_panels(
                gene.gene_symbol).count(), 1)
        self.assertEqual(
            GenePanelSnapshot.objects.get_gene_panels(gene.gene_symbol,
                                                      all=True,
                                                      internal=True).count(),
            2)

        url = reverse_lazy('panels:entity_detail',
                           kwargs={'slug': gene.gene_symbol})
        res = self.client.get(url)
        self.assertEqual(len(res.context_data['entries']), 2)
示例#6
0
 def setUp(self):
     super().setUp()
     self.gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
     self.gps_public = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
     self.gpes = GenePanelEntrySnapshotFactory(panel=self.gps_public)
     self.gpes_internal = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.internal)
     self.gpes_retired = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.retired)
     self.gpes_deleted = GenePanelEntrySnapshotFactory(panel__panel__status=GenePanel.STATUS.deleted)
     self.genes = GenePanelEntrySnapshotFactory.create_batch(4, panel=self.gps)
     self.str = STRFactory(panel__panel__status=GenePanel.STATUS.public)
     self.region = RegionFactory(panel__panel__status=GenePanel.STATUS.public)
     self.region2 = RegionFactory(panel__panel__status=GenePanel.STATUS.public, position_37=None)
示例#7
0
    def test_gel_curator_str_red(self):
        """When gene is added by a GeL currator it should be marked as red"""

        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity', kwargs={'pk': gps.panel.pk, 'entity_type': 'str'})
        str_data = {
            'name': 'SomeSTR',
            'chromosome': '1',
            'position_37_0': '12345',
            'position_37_1': '12346',
            'position_38_0': '12345',
            'position_38_1': '123456',
            'repeated_sequence': 'ATAT',
            'normal_repeats': '2',
            'pathogenic_repeats': '5',
            "gene": gene.pk,
            "source": Evidence.OTHER_SOURCES[0],
            "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)),
            "rating": Evaluation.RATINGS.AMBER,
            "moi": [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity": [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance": GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, str_data)
        panel = gps.panel.active_panel

        assert panel.get_str('SomeSTR').saved_gel_status == 1
示例#8
0
    def prepare_compare(self):
        gene = GeneFactory()

        gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.internal)
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps)

        gps2 = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        GenePanelEntrySnapshotFactory.create_batch(2,
                                                   panel=gps2)  # random genes
        GenePanelEntrySnapshotFactory.create(gene_core=gene, panel=gps2)

        STRFactory(panel=gps, position_37=None)

        return gene, gps, gps2
    def test_reviewer_source_visible(self):
        """When a reviewer adds a gene source should be displayed"""

        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[2],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)

        url = reverse_lazy('panels:detail', kwargs={'pk': gps.panel.pk})
        res = self.client.get(url)
        self.assertContains(res, gene_data['source'])
示例#10
0
    def test_adding_gene_save_source(self):
        gps = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(4, panel=gps)
        gene = GeneFactory()

        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)
        gpes = gps.panel.active_panel.get_gene(gene.gene_symbol)
        self.assertTrue(gene_data['source'] in gpes.evaluation.get(
            user=self.verified_user).comments.first().comment)
示例#11
0
    def test_adding_gene_create_activity(self):
        gps = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(4, panel=gps)
        gene = GeneFactory()

        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        req = self.client.post(url, gene_data)

        self.assertEqual(Activity.objects.count(), 1)
示例#12
0
 def test_region_review_view(self):
     gene = GeneFactory()
     gps = GenePanelSnapshotFactory()
     region = RegionFactory(panel=gps, gene_core=gene)
     url = reverse_lazy('panels:review_entity', args=(region.panel.panel.pk, 'region', region.name,))
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
示例#13
0
    def test_export_activities_functionality(self):
        gps = GenePanelSnapshotFactory()

        GenePanelEntrySnapshotFactory.create_batch(4, panel=gps)
        gene = GeneFactory()

        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)

        activities_url = reverse(
            'panels:activity') + '?format=csv&panel=' + str(gps.panel.pk)
        res = self.client.get(activities_url)
        self.assertTrue(gps.panel.name.encode() in res.content)
    def test_add_gene_to_panel(self):
        """When a reviewer adds a gene it shouldn't increment the version of a panel"""

        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)
        panel = gps.panel.active_panel

        assert panel.version == gps.version
    def test_reviewer_gene_grey(self):
        """When a reviewer adds a gene it should be marked as grey gene"""

        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)
        panel = gps.panel.active_panel

        self.assertEqual(panel.get_gene(gene.gene_symbol).saved_gel_status, 0)
示例#16
0
    def test_user_reviews(self):
        gps = GenePanelSnapshotFactory()
        region = RegionFactory.create_batch(10, panel=gps)
        for g in region:
            for evaluation in g.evaluation.all():
                evaluation.user = self.verified_user
                evaluation.save()

        self.assertEqual(self.verified_user.get_recent_evaluations().count(), 35)
示例#17
0
    def test_update_status(self):
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:update', kwargs={'pk': gps.panel.pk})
        data = self.create_panel_data()
        data['status'] = GenePanel.STATUS.public
        self.client.post(url, data)

        gp = GenePanel.objects.get(pk=gps.panel.pk)
        assert gp.status == data['status']
示例#18
0
    def test_update_panel(self):
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:update', kwargs={'pk': gps.panel.pk})
        data = self.create_panel_data()
        self.client.post(url, data)

        gp = GenePanel.objects.get(pk=gps.panel.pk)
        assert gp.active_panel.major_version == 0
        assert gp.active_panel.minor_version == 1
        assert gp.name == data['level4']
示例#19
0
    def test_evaluation_single_panel(self):
        gps = GenePanelSnapshotFactory()
        gpes = GenePanelEntrySnapshotFactory(panel=gps)
        gps.panel.active_panel.increment_version()
        gps.panel.active_panel.increment_version()
        gps = gps.panel.active_panel

        gene_symbol = gpes.gene_core.gene_symbol

        # check we copy evaluation rather than assign it
        current_count = gps.panel.active_panel.get_all_genes[
            0].evaluation.first().genepanelentrysnapshot_set.count()
        self.assertEqual(current_count, 1)

        # check if deleting gene preserves it in the previous versions
        gp = gps.panel
        gps.delete_gene(gene_symbol)
        v1 = gp.genepanelsnapshot_set.get(major_version=0, minor_version=1)
        self.assertTrue(v1.has_gene(gene_symbol))
示例#20
0
    def test_mark_all_genes_not_ready(self):
        gps = GenePanelSnapshotFactory()
        GenePanelEntrySnapshotFactory.create_batch(5, ready=True, panel=gps)
        assert GenePanelEntrySnapshot.objects.filter(ready=True).count() == 5

        url = reverse_lazy('panels:mark_not_ready',
                           kwargs={'pk': gps.panel.pk})
        res = self.client.get(url)
        assert GenePanelEntrySnapshot.objects.filter(ready=True).count() == 0
        assert res.status_code == 302
示例#21
0
    def test_super_panel(self):
        super_panel = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        super_panel.child_panels.set([self.gps_public, ])

        r_direct = self.client.get(reverse_lazy('webservices:get_panel', args=(self.gps_public.panel.pk,)))
        result_genes = list(sorted(r_direct.json()['result']['Genes'], key=lambda x: x.get('GeneSymbol')))

        r = self.client.get(reverse_lazy('webservices:get_panel', args=(super_panel.panel.pk,)))
        self.assertEqual(r.status_code, 200)
        self.assertEqual(result_genes, list(sorted(r.json()['result']['Genes'], key=lambda x: x.get('GeneSymbol'))))
示例#22
0
    def test_evaluation_stays(self):
        gps = GenePanelSnapshotFactory()
        gpes = GenePanelEntrySnapshotFactory(panel=gps)
        evaluations = gpes.evaluation.all()
        gpes2 = GenePanelEntrySnapshotFactory(panel=gps)
        evaluations2 = sorted(gpes2.evaluation.all().values_list('pk',
                                                                 flat=True))

        gps = gps.increment_version()
        gps.update_gene(self.gel_user, gpes.gene_core.gene_symbol,
                        {'phenotypes': [
                            'abra',
                        ]})
        del gps.panel.active_panel
        current_ev2 = sorted(
            gps.panel.active_panel.get_gene(
                gpes2.gene_core.gene_symbol).evaluation.all().values_list(
                    'pk', flat=True))

        self.assertNotEqual(evaluations2, current_ev2)
示例#23
0
 def test_str_review_view(self):
     gene = GeneFactory()
     gps = GenePanelSnapshotFactory()
     str_item = STRFactory(panel=gps, gene_core=gene)
     url = reverse_lazy('panels:review_entity',
                        args=(
                            str_item.panel.panel.pk,
                            'str',
                            str_item.name,
                        ))
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
示例#24
0
    def test_add_region_to_panel(self):
        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()

        number_of_regions = gps.stats.get('number_of_regions')

        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'region'
                           })
        region_data = {
            'name': 'SomeRegion',
            'chromosome': '1',
            'position_37_0': '',
            'position_37_1': '',
            'position_38_0': '12345',
            'position_38_1': '123456',
            'haploinsufficiency_score':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'triplosensitivity_score':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'required_overlap_percentage': randint(0, 100),
            "gene": gene.pk,
            "source": Evidence.ALL_SOURCES[randint(0, 9)],
            "tags": [
                TagFactory().pk,
            ],
            "publications": "{};{};{}".format(*fake.sentences(nb=3)),
            "phenotypes": "{};{};{}".format(*fake.sentences(nb=3)),
            "rating": Evaluation.RATINGS.AMBER,
            "comments": fake.sentence(),
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "penetrance": Region.PENETRANCE.Incomplete,
            "current_diagnostic": "True",
            "type_of_variants": Region.VARIANT_TYPES.small,
        }
        res = self.client.post(url, region_data)

        new_current_number = gps.panel.active_panel.stats.get(
            'number_of_regions')

        assert gps.panel.active_panel.version != gps.version

        assert res.status_code == 302
        assert number_of_regions + 1 == new_current_number

        # make sure tags are added
        new_region = GenePanel.objects.get(
            pk=gps.panel.pk).active_panel.get_region(region_data['name'])
        assert sorted(list(new_region.tags.all().values_list(
            'pk', flat=True))) == sorted(region_data['tags'])
示例#25
0
 def test_gene_review_view(self):
     gene = GeneFactory()
     gps = GenePanelSnapshotFactory()
     gpes = GenePanelEntrySnapshotFactory(panel=gps, gene_core=gene)
     url = reverse_lazy('panels:review_entity',
                        args=(
                            gpes.panel.panel.pk,
                            'gene',
                            gene.gene_symbol,
                        ))
     r = self.client.get(url)
     self.assertEqual(r.status_code, 200)
示例#26
0
    def test_gel_curator_region_red(self):
        """When gene is added by a GeL currator it should be marked as red"""

        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'region'
                           })
        region_data = {
            'name':
            'SomeRegion',
            'chromosome':
            '1',
            'position_37_0':
            '12345',
            'position_37_1':
            '12346',
            'position_38_0':
            '12345',
            'position_38_1':
            '123456',
            'haploinsufficiency_score':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'triplosensitivity_score':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'required_overlap_percentage':
            randint(0, 100),
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            Region.PENETRANCE.Incomplete,
            "type_of_variants":
            Region.VARIANT_TYPES.small,
        }
        self.client.post(url, region_data)
        panel = gps.panel.active_panel

        assert panel.get_region('SomeRegion').saved_gel_status == 1
    def test_type_of_variants_added(self):
        region = RegionFactory()
        gps = GenePanelSnapshotFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'region'
                           })

        source = region.evidence.last().name
        publication = region.publications[0]
        phenotype = region.publications[1]

        region_data = {
            'name': region.name,
            'chromosome': '1',
            'position_37_0': '12345',
            'position_37_1': '12346',
            'position_38_0': '12345',
            'position_38_1': '123456',
            'haploinsufficiency_score':
            choice(Region.DOSAGE_SENSITIVITY_SCORES)[0],
            'triplosensitivity_score': '',
            'required_overlap_percentage': randint(0, 100),
            "gene": region.gene_core.pk,
            "gene_name": "Other name",
            "source": set([source, Evidence.ALL_SOURCES[randint(0, 9)]]),
            "tags": [
                TagFactory().pk,
            ] + [tag.name for tag in region.tags.all()],
            "publications": ";".join([publication,
                                      fake.sentence()]),
            "phenotypes":
            ";".join([phenotype, fake.sentence(),
                      fake.sentence()]),
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "type_of_variants": Region.VARIANT_TYPES.small,
            "penetrance": Region.PENETRANCE.Incomplete,
        }
        res = self.client.post(url, region_data)
        self.assertEqual(res.status_code, 302)
        panel = gps.panel.active_panel

        assert panel.get_region(
            region.name).type_of_variants == region_data['type_of_variants']
    def test_add_gene_to_panel(self):
        gene = GeneFactory()
        gps = GenePanelSnapshotFactory()

        number_of_genes = gps.stats.get('number_of_genes', 0)

        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.ALL_SOURCES[randint(0, 9)],
            "tags": [
                TagFactory().pk,
            ],
            "publications":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "comments":
            fake.sentence(),
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
            "current_diagnostic":
            "True"
        }
        res = self.client.post(url, gene_data)

        new_current_number = gps.panel.active_panel.stats.get(
            'number_of_genes', 0)

        assert gps.panel.active_panel.version != gps.version

        assert res.status_code == 302
        assert number_of_genes + 1 == new_current_number
示例#29
0
    def test_filter_by_panel_date_range(self):
        gps = GenePanelSnapshotFactory(panel__status=GenePanel.STATUS.public)
        GenePanelEntrySnapshotFactory.create_batch(4, panel=gps)
        gene = GeneFactory()
        url = reverse_lazy('panels:add_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene'
                           })
        gene_data = {
            "gene":
            gene.pk,
            "source":
            Evidence.OTHER_SOURCES[0],
            "phenotypes":
            "{};{};{}".format(*fake.sentences(nb=3)),
            "rating":
            Evaluation.RATINGS.AMBER,
            "moi":
            [x for x in Evaluation.MODES_OF_INHERITANCE][randint(1, 12)][0],
            "mode_of_pathogenicity":
            [x for x in Evaluation.MODES_OF_PATHOGENICITY][randint(1, 2)][0],
            "penetrance":
            GenePanelEntrySnapshot.PENETRANCE.Incomplete,
        }
        self.client.post(url, gene_data)

        now = timezone.now()
        date_from = (now - timedelta(days=7)).strftime('%Y-%m-%d')
        date_to = (now + timedelta(days=7)).strftime('%Y-%m-%d')
        activities_url = reverse(
            'panels:activity'
        ) + '?date_from=' + date_from + '&date_to=' + date_to
        res = self.client.get(activities_url)
        self.assertEqual(len(res.context['activities']), 1)

        now = timezone.now() - timedelta(days=30)
        date_from = (now - timedelta(days=7)).strftime('%Y-%m-%d')
        date_to = (now + timedelta(days=7)).strftime('%Y-%m-%d')
        activities_url = reverse(
            'panels:activity'
        ) + '?date_from=' + date_from + '&date_to=' + date_to
        res = self.client.get(activities_url)
        self.assertEqual(len(res.context['activities']), 0)
示例#30
0
    def test_delete_gene_ajax(self):
        gps = GenePanelSnapshotFactory()
        genes = GenePanelEntrySnapshotFactory.create_batch(5, panel=gps)
        gene_symbol = genes[2].gene['gene_symbol']

        number_of_genes = gps.stats.get('number_of_genes')

        url = reverse_lazy('panels:delete_entity',
                           kwargs={
                               'pk': gps.panel.pk,
                               'entity_type': 'gene',
                               'entity_name': gene_symbol
                           })
        res = self.client.get(url, HTTP_X_REQUESTED_WITH='XMLHttpRequest')

        new_gps = GenePanel.objects.get(pk=gps.panel.pk).active_panel
        assert new_gps.has_gene(gene_symbol) is False
        assert number_of_genes - 1 == new_gps.stats.get(
            'number_of_genes')  # 4 is due to create_batch
        assert res.json().get('status') == 200
        assert res.json().get('content').get('inner-fragments')