コード例 #1
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class ProteomeData(MeasurementModel):
    locus = dmodels.ForeignKey('Locus', on_delete=models.PROTECT)
    fold_change = dmodels.FloatField(di_show=True)
    adjusted_p_value = dmodels.FloatField(di_show=True,
                                          validators=[validate_probabilty])
    unique_peptides = dmodels.IntegerField()

    class Meta:
        unique_together = (('locus', 'experiment'), )
        verbose_name_plural = 'Proteom data'

    def __str__(self):
        return 'Proteome Datapoint'
コード例 #2
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class CoAData(ExperimentalData):
    co_a_derivative = dmodels.ForeignKey('CoADerivative',
                                         on_delete=models.PROTECT)
    stderr = dmodels.FloatField(null=True, blank=True, di_show=True)

    class Meta:
        unique_together = (('co_a_derivative', 'experiment'), )
        verbose_name_plural = 'CoA data'

    def __str__(self):
        return 'CoA datapoint'
コード例 #3
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class FluxData(MeasurementModel):
    flux = dmodels.FloatField(di_show=True, validators=[validate_flux])
    flux_min = dmodels.FloatField(di_show=True,
                                  di_display_name='lb',
                                  validators=[validate_flux])
    flux_max = dmodels.FloatField(di_show=True,
                                  di_display_name='ub',
                                  validators=[validate_flux])

    reaction = dmodels.ForeignKey('Reaction', on_delete=models.CASCADE)

    class Meta:
        unique_together = ((
            'reaction',
            'experiment',
        ))
        verbose_name_plural = 'Fluxes'

    def __str__(self):
        return 'Flux datapoint'
コード例 #4
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class Reaction(BiologicalModel):
    name = dmodels.CharField(max_length=255,
                             unique=True,
                             di_show=True,
                             di_display_name='reaction_name')
    reaction_equation = dmodels.TextField()
    lb = dmodels.FloatField(null=True, blank=True)
    ub = dmodels.FloatField(null=True, blank=True)
    brenda = dmodels.CharField(max_length=13, blank=True)
    kegg = dmodels.CharField(max_length=10, blank=True, di_show=True)
    metacyc = dmodels.CharField(max_length=100, blank=True)
    pubmed = dmodels.CharField(max_length=12, blank=True)
    notes = dmodels.TextField(blank=True)
    metabolite = dmodels.ManyToManyField(
        'Metabolite',
        related_name='reactions')  #, through='ReactionMetabolite')

    def __str__(self):
        """Return equation and database ID if exists in specified order."""
        allowed_length = 30
        if self.brenda:
            return self.brenda
        elif self.metacyc:
            return self.metacyc
        elif self.kegg:
            return self.kegg
        else:
            if len(self.reaction_equation) < allowed_length:
                return self.reaction_equation
            else:
                return self.reaction_equation[:30] + '[...]'

    @property
    def brendalink(self):
        if self.brenda:
            prefix = self.brenda[:2]
            refid = self.brenda[2:]
            link = '<a href="http://www.brenda-enzymes.org/structure.php?show=reaction&id={}&type={}&displayType=marvin">{}</a>'
            if prefix == 'BS':
                return format_html(link, mark_safe(refid), mark_safe('S'),
                                   self.brenda)
            elif prefix == 'BR':
                return format_html(link, mark_safe(refid), mark_safe('I'),
                                   self.brenda)
        else:
            return None

    @property
    def kegglink(self):
        if self.kegg:
            link = '<a href="http://www.genome.jp/dbget-bin/www_bget?rn:{}">{}</a>'
            return format_html(link, mark_safe(self.kegg), self.kegg)
        else:
            return None

    @property
    def metacyclink(self):
        if self.metacyc:
            link = '<a href="http://metacyc.org/META/NEW-IMAGE?type=NIL&object={}&redirect=T">{}</a>'
            return format_html(link, mark_safe(self.metacyc), self.metacyc)
        else:
            return None

    @property
    def db_crossref(self):
        return (self.brendalink or self.kegglink or self.metacyclink
                or 'No cross reference found.')

    @property
    def short_reaction(self):
        allowed_length = 30
        if len(self.reaction_id < allowed_length):
            return self.reaction_id
        else:
            return self.reaction_id[:30] + '[...]'
コード例 #5
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class RNAseqData(TranscriptomeData):
    mean_rpkm = dmodels.FloatField(di_show=True)

    class Meta:
        verbose_name_plural = 'RNASeq data'
コード例 #6
0
ファイル: models.py プロジェクト: DISBi/django-disbi
class ExperimentalData(MeasurementModel):
    mean = dmodels.FloatField(di_show=True)

    class Meta:
        abstract = True