예제 #1
0
    def test_WildtypeFilter(self):
        f = data_query.WildtypeFilter()

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='')))
        self.assertEqual(f.score(None, ov), 1)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='Delta gene-01')))
        self.assertEqual(f.score(None, ov), -1)
예제 #2
0
    def test(self):
        genetics = data_model.Genetics(taxon='Mycoplasma pneumoniae',
                                       variation='ΔMPN001')
        self.assertFalse(genetics.is_wildtype())
        self.assertTrue(genetics.is_variant())

        genetics = data_model.Genetics(taxon='Mycoplasma pneumoniae',
                                       variation='')
        self.assertTrue(genetics.is_wildtype())
        self.assertFalse(genetics.is_variant())
예제 #3
0
    def test_TaxonomicDistanceFilter(self):
        # example 1
        f = data_query.TaxonomicDistanceFilter('Mycoplasma pneumoniae M129')
        self.assertEqual(f.max, 8.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma pneumoniae M129')))
        self.assertEqual(f.score(None, ov), 1.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma pneumoniae')))
        self.assertEqual(f.scale, 8./5)
        self.assertEqual(f.score(None, ov), math.exp(-1/f.scale))

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Escherichia coli')))
        self.assertEqual(f.score(None, ov), math.exp(-5))

        # example 2
        f = data_query.TaxonomicDistanceFilter('Mycoplasma pneumoniae M129', max=5)
        self.assertEqual(f.max, 5.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma pneumoniae M129')))
        self.assertEqual(f.score(None, ov), 1.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma pneumoniae')))
        self.assertEqual(f.score(None, ov), math.exp(-1/f.scale))

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Escherichia coli')))
        self.assertEqual(f.score(None, ov), -1)

        # example 3
        f = data_query.TaxonomicDistanceFilter('Mycoplasma genitalium')
        self.assertEqual(f.max, 7.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma genitalium G37')))
        self.assertEqual(f.score(None, ov), 1.)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma genitalium')))
        self.assertEqual(f.score(None, ov), 1)

        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(taxon='Mycoplasma')))
        self.assertEqual(f.score(None, ov), math.exp(-1/f.scale))
예제 #4
0
    def read_genetics(self, ws):
        """ Read taxon from an Excel worksheet

        Args:
            ws (:obj:`openpyxl.Worksheet`): worksheet

        Returns:
            :obj:`data_model.Genetics`: taxon
        """
        return data_model.Genetics(
            taxon=ws.cell(row=2, column=1).value,
            variation=ws.cell(row=2, column=2).value,
        )
예제 #5
0
    def test_OptionsFilter(self):
        f = data_query.OptionsFilter(('metadata', 'genetics', 'variation', ), [''])
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='')))
        self.assertEqual(f.score(None, ov), 1)
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='wildtype')))
        self.assertEqual(f.score(None, ov), -1)
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='Delta gene-01')))
        self.assertEqual(f.score(None, ov), -1)

        f = data_query.OptionsFilter(('metadata', 'genetics', 'variation', ), ['wildtype'])
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='')))
        self.assertEqual(f.score(None, ov), -1)
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='wildtype')))
        self.assertEqual(f.score(None, ov), 1)
        ov = data_model.ObservedValue(
            metadata=data_model.ObservedResultMetadata(genetics=data_model.Genetics(variation='Delta gene-01')))
        self.assertEqual(f.score(None, ov), -1)
예제 #6
0
    def metadata_dump(self, component):
        """ Calculate a consensus statistical representation of the one or more observed values

        Args:
            component (:obj:`models.Observation`): model component dump data for

        Returns:
            :obj:`list` of :obj:`data_model.ObservedResultMetadata`: data model metadata object
        """
        genetics = None
        environment = None
        cross_references = []
        method = None
        synonym = []
        meta = component._metadata

        taxon = meta.taxon[0].name if meta.taxon else None
        variation = meta.cell_line[0].name if meta.cell_line else None
        genetics = data_model.Genetics(taxon=taxon, variation=variation)

        temperature = meta.conditions[
            0].temperature if meta.conditions else None
        ph = meta.conditions[0].ph if meta.conditions else None
        media = meta.conditions[0].media if meta.conditions else None
        growth_status = meta.conditions[
            0].growth_status if meta.conditions else None
        growth_system = meta.conditions[
            0].growth_system if meta.conditions else None
        environment = data_model.Environment(temperature=temperature,
                                             ph=ph,
                                             media=media,
                                             growth_status=growth_status,
                                             growth_system=growth_system)

        name = meta.method[0].name if meta.method else None
        description = meta.method[0].comments if meta.method else None
        performer = meta.method[0].performer if meta.method else None
        hardware = meta.method[0].hardware if meta.method else None
        software = meta.method[0].software if meta.method else None
        method = data_model.Method(name=name,
                                   description=description,
                                   performer=performer,
                                   hardware=hardware,
                                   software=software)

        if meta.resource:
            for item in meta.resource:
                cross_references.append(
                    data_model.Resource(namespace=item.namespace, id=item._id))
        else:
            cross_references.append(
                data_model.Resource(namespace=None, id=None))

        if meta.synonym:
            for item in meta.synonym:
                synonym.append(data_model.Synonym(name=item.name))
        else:
            synonym.append(data_model.Synonym(name=None))

        metadata_result = data_model.ObservedResultMetadata(
            genetics=genetics,
            environment=environment,
            cross_references=cross_references,
            method=method,
            synonym=synonym)

        return metadata_result
예제 #7
0
    def test_ObservedResultMetadata(self):
        o = data_model.ObservedResultMetadata()
        o.genetics = data_model.Genetics(taxon='Mycoplasma pneumoniae',
                                         variation='ΔMPN001')
        o.environment = data_model.Environment(temperature=37,
                                               ph=7.,
                                               media='Hayflick')
        o.reference = data_model.Reference(title='title',
                                           author='author',
                                           year=2017,
                                           volume=1,
                                           number=1,
                                           pages='1-10')
        o.method = data_model.ExperimentalMethod(
            name='assay', description='description of assay')

        observable = data_model.Observable(
            interaction=data_model.Reaction(id='AtpSynthase'),
            specie=data_model.Specie(id='ATP'),
            compartment=data_model.Compartment(id='c'),
            property='K_m',
        )

        ov = data_model.ObservedValue(
            observable=observable,
            value=1.0,
            error=0.5,
            units='U/mg',
        )

        o.observed_result.append(ov)

        o.validate()

        self.assertEqual(o.observed_result, [ov])
        self.assertEqual(ov.metadata, o)
        self.assertEqual(ov.observable.interaction.id, 'AtpSynthase')
        self.assertEqual(ov.observable.specie.id, 'ATP')
        self.assertEqual(ov.observable.compartment.id, 'c')
        self.assertEqual(ov.observable.property, 'K_m')

        self.assertEqual(ov.value, 1.0)
        self.assertEqual(ov.error, 0.5)
        self.assertEqual(ov.units, 'U/mg')

        self.assertEqual(o.genetics.taxon, 'Mycoplasma pneumoniae')
        self.assertEqual(o.genetics.variation, 'ΔMPN001')

        self.assertEqual(o.environment.temperature, 37.)
        self.assertEqual(o.environment.ph, 7.)
        self.assertEqual(o.environment.media, 'Hayflick')

        self.assertEqual(o.reference.title, 'title')
        self.assertEqual(o.reference.author, 'author')
        self.assertEqual(o.reference.year, 2017)
        self.assertEqual(o.reference.volume, 1)
        self.assertEqual(o.reference.number, 1)
        self.assertEqual(o.reference.pages, '1-10')

        self.assertEqual(o.method.name, 'assay')
        self.assertEqual(o.method.description, 'description of assay')